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透過向裝置了這個協定的伺服器發出HTTP請求。發出請求的用戶端一般都是需要向遠端系統要求呼叫的軟件。
JSON-RPC(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>
|
|
boolean
|
|
布尔型邏輯值 (0 或 1)
|
date/time
|
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>
|
|
double
|
|
雙倍精確浮點數
|
integer
|
or
|
整數
|
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>
|
结构体
|
nil
|
|
|
範例
以下為一個尋常的 XML-RPC 請求的範例:
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>40</i4></value>
</param>
</params>
</methodCall>
相對於上述請求,以下為一個尋常回應的範例:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
以下為一個尋常的 XML-RPC 錯誤:
<?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>
批評
实现
Python
C++
Objective-C / GNUstep / Cocoa
Erlang
Java
XMPP
Other
參看
參考資料
外部連結