XML-RPC
xml-rpc是一个remote procedure call(RPC)协议,它使用XML来编码protocol并且使用HTTP作为传输机制。"xml-rpc"也指用独立于特定的协议使用XML做remote procedure call。本文是关于协议的xml-rpc"。
Usage
XML-RPC通过向服务器发送一个HTTP请求实现protocol。在这种情况下,通常是客户端软件想调用一个远程系统的方法。可以传递给远程方法多个输入参数,返回一个返回值。参数的类型允许嵌套到maps和lists,因此可以传输较大的结构。所以,可以使用xml-rpc来把objects或structures当做输入和输出参数传输。
识别授权客户可以通过使用流行的HTTP安全方法。基本身份验证的访问是用于识别,HTTPS是识别时使用(通过证书)和加密的邮件需要。这两种方法可以结合起来。与REST相比,resource是representations (文档)的传输,xml-rpc是为了调用方法。
xml-rpc比SOAP更容易使用和理解,因为:
- 只允许一个方法序列化的方法,而SOAP定义多个不同的编码
- 有一个简单的安全模型
- 不需要(也不支持)创建WSDL服务描述,虽然XRDL提供了一个简单的WSDL提供的功能子集
json-rpc类似xml-rpc。
Data types
常见的数据类型转换为XML实例的值如下所示:Name | Tag Example | Description |
---|---|---|
array |
<array> <data> <value><i4>1404</i4></value> <value><string>Something here</string></value> <value><i4>1</i4></value> </data> </array> | Array of values, storing no keys |
base64 |
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64> | Base64-encoded binary data |
boolean |
<boolean>1</boolean> | Boolean logical value (0 or 1) |
date/time |
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601> | Date and time in ISO 8601 format |
double |
<double>-12.53</double> | Double precision floating point number |
integer |
<int>42</int> or <i4>42</i4> | Whole number, integer |
string |
<string>Hello world!</string> or Hello world! | String of characters. Must follow XML encoding. |
struct |
<struct> <member> <name>foo</name> <value><i4>1</i4></value> </member> <member> <name>bar</name> <value><i4>2</i4></value> </member> </struct> | Associative array |
nil |
<nil/>
| Discriminated null value; an XML-RPC extension |