xml-rpc



XML-RPC 是互联网上的一种远程过程调用协议,采用http+xml的方式。XML-RPC消息是一个HTTP-POST请求,请求报文是XML,而服务端调用返回的报文也采用XML格式。

XML-RPC支持的数据类型有:int, string, boolean, double, dateTime.iso8601, base64, array, struct。如果不指定类型,缺省为string。

返回报文正常情况都是200 OK,比如:

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
</pre> &lt;?xml version="1.0"?&gt; &lt;methodResponse&gt; &lt;params&gt; &lt;param&gt; &lt;value&gt;&lt;string&gt;South Dakota&lt;/string&gt;&lt;/value&gt; &lt;/param&gt; &lt;/params&gt; &lt;/methodResponse&gt; &lt;/code&gt;&lt;/pre&gt; <pre>Ruby 很好地提供了对XML-RPC的支持,直接require “xmlrpc”,分别有clientserver。一个简单的例子:
</pre> server 端,new创建一个实例,并在指定端口侦听,serve在增加了处理器后启动服务,处理XML-RPC请求并响应。 <pre>
require “xmlrpc/server”

s = XMLRPC::Server.new(7777)
s.add_handler(“michael.add”) do |a,b|
a + b
end

s.serve
</pre> client 端采用call调用方法,第一个参数是方法名,之后跟着方法需要的参数。 <pre>
require “xmlrpc/client”

server = XMLRPC::Client.new(“localhost”, “/RPC2”, 7777)
begin
param = server.call(“michael.add”, 4, 5)
puts “4 + 5 = #{param}”
rescue XMLRPC::FaultException => e
puts “Error:”
puts e.faultCode
puts e.faultString
end

Wordpress提供了XML-PRC的支持,从WordPress 3.5起就默认支持XML-RPC功能,详细的API参见XML-RPC WordPress API,采用wp.接口取代了Blogger, MovableType和metaWeblog接口。