XML-RPC
外观
XML-RPC是一個远程过程调用(Remote Procedure Call,RPC)的分布式计算協議,通过XML将调用函数封装,並使用HTTP协议作為傳送機制。[1]
歷史
[编辑]XML-RPC發表於1998年,由UserLand Software(UserLand Software)的Dave Winer及Microsoft共同發表[2]。後來在新的功能不斷被引入下,這個標準慢慢演變成為今日的SOAP協定。
XML-RPC協定是已登記的專利項目,由Phillip Merrick、Stewart Allen及Joseph Lapp共同持有,於1998年3月提出申請,指其將用於一個構想中的應用程式,並於2006年4月獲得接納。現時這個專利由位於美國維珍尼亞州費爾法克斯的webMethods使用[3]。
用法
[编辑]XML-RPC调用过程是由客户端通过向实现XML-RPC的服务器发送HTTP请求并接收响应实现。一次调用包含多个参数和一个结果。协议为参数和结果定义了若干数据类型。这些数据类型可以包含嵌套的,例如可以构建由五个整数组成的数组作为参数。
参数-结果结构和不同数据类型旨反映常见编程语言中使用的结构和数据类型。
可以使用流行的 HTTP 安全方法实现客户端的授权识别。基本认证可用于识别和身份验证。
JSON-RPC跟 XML-RPC 相類似。
数据类型
[编辑]以下的例子為日常的数据类型在轉化為等同的XML後的面貌:
| 名稱 | 標記範例 | 描述 |
|---|---|---|
| array |
<array>
<data>
<value><i4>1404</i4></value>
<value><string>Something here</string></value>
<value><i4>1</i4></value>
</data>
</array>
|
由值构成的数组,不存储键 |
| base64 |
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>
|
以Base64编码的二进制数据 |
| boolean |
<boolean>1</boolean>
|
布尔型邏輯值 (0 或 1) |
| date/time |
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>
|
以ISO 8601格式存储的日期和时间 |
| double |
<double>-12.53</double>
|
雙倍精確浮點數 |
| integer |
<i4>42</i4>
or <int>42</int>
|
整數 |
| string |
<string>Hello world!</string>
|
字符串,必須遵守XML encoding(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>
|