XML-RPC - 维基百科,自由的百科全书

XML-RPC是一個远程过程调用Remote Procedure Call,RPC)的分布式计算協議,通过XML将调用函数封装,並使用HTTP协议作為傳送機制。[1]

歷史

[编辑]

XML-RPC發表於1998年,由UserLand SoftwareUserLand Software英语UserLand Software)的Dave WinerMicrosoft共同發表[2]。後來在新的功能不斷被引入下,這個標準慢慢演變成為今日的SOAP協定。

XML-RPC協定是已登記的專利項目,由Phillip Merrick、Stewart Allen及Joseph Lapp共同持有,於1998年3月提出申請,指其將用於一個構想中的應用程式,並於2006年4月獲得接納。現時這個專利由位於美國維珍尼亞州費爾法克斯webMethods使用[3]

用法

[编辑]

XML-RPC透過向裝置了這個協定的伺服器發出HTTP請求。發出請求的用戶端一般都是需要向遠端系統要求呼叫的軟件。

JSON-RPCJSON-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
<boolean>1</boolean> 
布尔型邏輯值 (0 或 1)
date/time
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601> 
double
<double>-12.53</double> 
雙倍精確浮點數
integer
<i4>42</i4> 

or

<int>42</int> 
整數
string
<string>Hello world!</string> 
字符串,必須遵守XML encodingXML 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
<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

[编辑]

參看

[编辑]

參考資料

[编辑]
  1. ^ Simon St. Laurent, Joe Johnston, Edd Dumbill. Programming Web Services with XML-RPC. First Edition. O'Reilly. 2001-06. 
  2. ^ Box, Don. A Brief History of SOAP. O'Reilly. 2001-04-01 [2008-10-09]. (原始内容存档于2008-09-15). 
  3. ^ Merrick; et al. US Patent 7,028,312. 2006-04-11 [2008-09-18]. (原始内容存档于2011-12-03). 

外部連結

[编辑]