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