XML-RPC 是一种跨平台的远程调用协议,适合在Internet上传输。客户端通过HTTP协议向服务器发送一个POST请求,POST数据用XML编码;服务器收到请求后,提取POST数据,获取调用方法和参数,然后执行,最后返回XML格式的结果。

采用XML-RPC协议,不同的服务器之间可以相互通信,调用远程过程。相比SOAP,XML-RPC要简单,更适合web开发。
一个简单的XML-RPC请求
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>
即使从未接触也很容易明白:examples.getStateName是远程调用方法,41则是调用参数,服务器位置是betty.userland.com/RPC2
发送头要求:
1、POST后面的路径不是必须的,如果服务器只处理XML-RPC请求,此处可以省略;如果服务器还要处理HTTP请求,应将服务器的路径补全。
2、User-Agent和Host必须指明。
3、Content-Type必须是text/xml格式。
4、发送的字节数必须指明,而且必须正确。
5、其他头信息根据需要可以添加。
用PHP很容易实现
$xml="some request in xml format"; //请求数据
$fp=fopen($host,$port,$error,$errstr,10);
if($error)
die($errstr);
fwrite($fp,"POST / HTTP1.1 ");
fwrite($fp,"User-Agent: XML-RPC Client ");
fwrite($fp,"Host: $host ");
fwrite($fp,"Content-Type: text/xml ");
fwrite($fp,"Content-Length: ".strlen($xml)." ");
while($data=fread($fp,1024)) {
//do something here
}
fclose($fp);XML请求只有一个根元素<methodCall>,紧接着根元素是调用方法名<methodName>,指明要调用的远程过程,最后是参数列表。参数列表以<params>开始,其下每个参数用<param>包括。参数必须指明数值类型,如未指明,默认是string类型。可支持的简单类型有int(或者i4)、boolean、string、base64、double、dateTime.iso8601,复杂数据类型支持数组array和结构struct类型,如果要传输对象类型的数据,必须先将对象转换为struct类型,即将对象的属性导出为struct。
struct类型:
<struct>
<member>
<name>lowerBound</name>
<value><i4>18</i4></value>
</member>
<member>
<name>upperBound</name>
<value><i4>139</i4></value>
</member>
</struct>
<array>
<data>
<value><i4>12</i4></value>
<value><string>Egypt</string></value>
<value><boolean>0</boolean></value>
<value><i4>-31</i4></value>
</data>
</array>
<struct>
<member>
<name>lowerBound</name>
<value><i4>18</i4></value>
</member>
<member>
<name>upperBound</name>
<value><i4>139</i4></value>
</member>
<member>
<name>array</name>
<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>
</value>
</member>
</struct>
本文介绍了XML-RPC协议的基本概念及其在Web开发中的应用。XML-RPC是一种轻量级的远程过程调用协议,使用XML编码数据并通过HTTP进行传输。文章详细解释了如何构建XML-RPC请求和响应,并提供了PHP实现的例子。
3066

被折叠的 条评论
为什么被折叠?



