Share to: share facebook share twitter share wa share telegram print page

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). 

外部連結

Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 
Kembali kehalaman sebelumnya