XML-RPC介绍(转载)

XMLRPC协议中文说明
xmlrpc


xmlrpc是一个基于Internet的远程过程调用协议。

它主要通过消息(Message)调用工作,基于HTTP-POST,Message的Body部分是XML格式,同样当结果返回的时候也是XML格式。过程的参数可以是基本变量(Scalar),还可以是一个结构(struct)或者是一个数组(array)。


一个调用实例:

POST /RPC2 HTTP/1.0

User-Agent: Frontier/5.1.2 (WinNT)

Host: betty.userland.com

Content-Type: text/xml

Content-length: 181


<?xml version="1.0"?>

<methodCall>

<methodName>examples.getStateName</methodName>

<params>

<param>

<value><i4>41</i4></value>

</param>

</params>

</methodCall>


调用头部说明

User-Agent和Host是必须的。

Content-Type是text/xml.

Content-Length必须提供,而且必须是正确的!


Body部分说明:

首先可以看到是一个XML格式的文本。主体部分是一个methodCall元素,包含着方法名称(MethodName)及其调用参数(params)。

<param>的<value>部分,XMLPRC支持的类型有下列几种:

1、变量(Scalar)<value>类型:

<value>里面可以包含的类型有;

类型 说明 实例

<i4>或者<int> 整数 -12

<boolean> 0(false),1(true)

<string> 字符串 hello world

<double> 浮点数 -12.123

<dateTime.iso8601> 时间 19980717T14:08:55

<base64> base64编码 eW91IGNhbid0IHJlYWQgdGhpcyE=

缺省类型是string.

2、<struct>s

<struct>类型包含若干个<member>,每一个<member>包含<name>和<value>.

实例:

<struct>

<member>

<name>lowerBound</name>

<value><i4>18</i4></value>

</member>

<member>

<name>upperBound</name>

<value><i4>139</i4></value>

</member>

</struct>

3、<array>s

<array>包含若干个<data>,每一个<data>可以包含若干个<value>。

实例:

<array>

<data>

<value><i4>12</i4></value>

<value><string>Egypt</string></value>

<value><boolean>0</boolean></value>

<value><i4>-31</i4></value>

</data>

</array>


XMLRPC的基本类型就是上面这些。


一个响应的例子:

HTTP/1.1 200 OK

Connection: close

Content-Length: 158

Content-Type: text/xml

Date: Fri, 17 Jul 1998 19:55:08 GMT

Server: UserLand Frontier/5.1.2-WinNT


<?xml version="1.0"?>

<methodResponse>

<params>

<param>

<value><string>South Dakota</string></value>

</param>

</params>

</methodResponse>


例子说明:

1、如果调用成功:

返回必须是200 OK;

Content-Type是text/xml.

Content-Length也是必须的,而且必须是正确的!

主体部分是一个methodResponse元素,包含着返回参数(params)及其类型。

2、如果调用不成功

主体部分是一个methodResponse元素,包含着一个<fault>及其原因<value>,原因是一个<struct>,里面包含错误号(faultCode)和错误原因(faultString)。

譬如:

HTTP/1.1 200 OK

Connection: close

Content-Length: 426

Content-Type: text/xml

Date: Fri, 17 Jul 1998 19:55:02 GMT

Server: UserLand Frontier/5.1.2-WinNT


<?xml version="1.0"?>

<methodResponse>

<fault>

<value>

<struct>

<member>

<name>faultCode</name>

<value><int>4</int></value>

</member>

<member>

<name>faultString</name>

<value><string>Too many parameters.</string></value>

</member>

</struct>

</value>

</fault>

</methodResponse>

3、params和fault不能同时存在。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值