XML-RPC

XML-RPC是一個遠程過程調用（Remote Procedure Call，RPC）的分佈式計算協議，通過XML將調用函數封裝，並使用HTTP協議作為傳送機制。

**歷史**
XML-RPC發表於1998年，由UserLand Software（UserLand Software）的Dave Winer及Microsoft共同發表。後來在新的功能不斷被引入下，這個標準慢慢演變成為今日的SOAP協定。
XML-RPC協定是已登記的專利項目，由Phillip Merrick、Stewart Allen及Joseph Lapp共同持有，於1998年3月提出申請，指其將用於一個構想中的應用程式，並於2006年4月獲得接納。現時這個專利由位於美國維珍尼亞州費爾法克斯的webMethods使用。

**用法**
XML-RPC調用過程是由客戶端通過向實現XML-RPC的服務器發送HTTP請求並接收響應實現。一次調用包含多個參數和一個結果。協議為參數和結果定義了若干數據類型。這些數據類型可以包含嵌套的，例如可以構建由五個整數組成的數組作為參數。
參數-結果結構和不同數據類型旨反映常見編程語言中使用的結構和數據類型。
可以使用流行的 HTTP 安全方法實現客戶端的授權識別。基本認證可用於識別和身份驗證。
JSON-RPC跟 XML-RPC 相類似。

**數據類型**
以下的例子為日常的數據類型在轉化為等同的XML後的面貌：

**範例**
以下為一個尋常的 XML-RPC 請求的範例：
examples.getStateName


40


相對於上述請求，以下為一個尋常回應的範例：


South Dakota


以下為一個尋常的 XML-RPC 錯誤：




faultCode
4


faultString
Too many parameters.





**批評**

**實現**

**Python**
  xmlrpclib
** Renamed  xmlrpc.client date=20161206172954  in Python 3.-  Creating XML-RPC Servers and Clients with Twisted date=20220317070213 

**C++**
  Libiqxmlrpc date=20050329023614 -  Ultra lightweight XML-RPC library for C++ date=20220501005010 -  XML-RPC for C and C++ date=20220303110154 -  XmlRpc++ date=20220328100821 -  XmlRpc C++ client for Windows date=20220421170450 -  gSOAP toolkit for C and C++ supporting XML-RPC and more date=20130621044029 -  libmaia: XML-RPC for Qt/C++ date=20210623215838 

**Objective-C / GNUstep / Cocoa**
  XMLRPC Framework date=20220314030029 -  Cocoa XML-RPC Framework date=20220313065425 : Open Source XML-RPC framework written for use in Mac OS X Cocoa applications.

**Erlang**
  XML-RPC for Erlang: This is an HTTP 1.1 compliant XML-RPC library for Erlang. It is designed to make it easy to write XML-RPC Erlang clients and/or servers. The library is compliant with the XML-RPC specification published by https://web.archive.org/web/20051210031514/http://www.xmlrpc.org/

**Java**
  Apache XML-RPC date=20220412022415 : Open source library for Java-  XML-RPC Delight date=20150627034622 : Convenient serialisation/deserialisation for Apache XML-RPC using Java Annotations and Beans-   Secure Apache XML-RPC  -  Redstone XML-RPC Library date=20210702072602 : Redstone's Open Source Library - XML-RPC implementation in Java-  XML-RPC Library for Java ME date=20220330055918 : Open source client-side library for Java ME

**XMPP**
  pyJabberXMLRPC date=20110720180311 : Python classes for XMPP-  Jabber-RPC date=20220503161500 : Over the Extensible Messaging and Presence Protocol protocol

**Other**
  JSON/XML-RPC Client and Server date=20160118075354 : Abstract away the differences between JSON-RPC and XML-RPC-  RemObjects SDK date=20220412014439  Delphi and .NET package for XML-RPC, in addition to SOAP and others-  RealThinClient SDK date=20180214094628 : For Delphi/C++-  XML::RPC date=20180614231017 : Perl module implementation-  XML-RPC for ActionScript date=20150218202950 : For Flash ActionScript 2.0-  as3-rpclib date=20160526134128 : For Flex/Actionscript 3-   XML-RPC.NET: Open source library for .NET clients and servers-  XmlRpc-Light date=20160412210524 : Client and server library for OCaml-  S-XML-RPC date=20200220064256 : Client and server library for Common Lisp-  PHP-XML-RPC date=20130903091655 : For PHP-  HaXR: Client and server library for Haskell-  xi library with PHP and Javascript XML-RPC: For PHP and Javascript-  Ruby XML-RPC library: For Ruby-  XML-RPC interface to Lua: For Lua-  android-xmlrpc date=20160115093538 : A light XML-RPC client for Google Android-  XML-RPC for Tcl date=20210702194720 : A Tcl implementation of XML-RPC providing client and server support-  date=20220331031321 : RebXR, a full client/server XML-RPC implementation for REBOL.

**參看**
AJAX
*Component technologies
*List of Web service markup languages
*OPML
*Web服務

**參考資料**

**外部連結**
  XML-RPC Homepage date=20220425044301 -  Forum date=20060812044038 -  Tutorials-  Technology Reports date=20210621002302 -  Citations from CiteSeer date=20090827145323