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 透過向裝置了這個協定的伺服器發出 HTTP 請求。發出請求的使用者端一般都是需要向遠端系統要求呼叫的軟體。

JSON-RPC（JSON-RPC）跟 XML-RPC 相類似。



資料類型

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



範例

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

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

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



批評



實現

Python


* xmlrpclib
  
* Renamed xmlrpc.client （頁面存檔備份，存於網際網路檔案館） in Python 3.

* Creating XML-RPC Servers and Clients with Twisted （頁面存檔備份，存於網際網路檔案館）

C++


* Libiqxmlrpc （頁面存檔備份，存於網際網路檔案館）

* Ultra lightweight XML-RPC library for C++ （頁面存檔備份，存於網際網路檔案館）

* XML-RPC for C and C++ （頁面存檔備份，存於網際網路檔案館）

* XmlRpc++ （頁面存檔備份，存於網際網路檔案館）

* XmlRpc C++ client for Windows （頁面存檔備份，存於網際網路檔案館）

* gSOAP toolkit for C and C++ supporting XML-RPC and more （頁面存檔備份，存於網際網路檔案館）

* libmaia: XML-RPC for Qt/C++ （頁面存檔備份，存於網際網路檔案館）

Objective-C / GNUstep / Cocoa


* XMLRPC Framework （頁面存檔備份，存於網際網路檔案館）

* Cocoa XML-RPC Framework （頁面存檔備份，存於網際網路檔案館）: 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 （頁面存檔備份，存於網際網路檔案館）: Open source library for Java

* XML-RPC Delight （頁面存檔備份，存於網際網路檔案館）: Convenient serialisation/deserialisation for Apache XML-RPC using Java Annotations and Beans

* [1]: Secure Apache XML-RPC

* Redstone XML-RPC Library （頁面存檔備份，存於網際網路檔案館）: Redstone's Open Source Library - XML-RPC implementation in Java

* XML-RPC Library for Java ME （頁面存檔備份，存於網際網路檔案館）: Open source client-side library for Java ME

XMPP


* pyJabberXMLRPC （頁面存檔備份，存於網際網路檔案館）: Python classes for XMPP

* Jabber-RPC （頁面存檔備份，存於網際網路檔案館）: Over the Extensible Messaging and Presence Protocol protocol

Other


* JSON/XML-RPC Client and Server （頁面存檔備份，存於網際網路檔案館）: Abstract away the differences between JSON-RPC and XML-RPC

* RemObjects SDK （頁面存檔備份，存於網際網路檔案館） Delphi and .NET package for XML-RPC, in addition to SOAP and others

* RealThinClient SDK （頁面存檔備份，存於網際網路檔案館）: For Delphi/C++

* XML::RPC （頁面存檔備份，存於網際網路檔案館）: Perl module implementation

* XML-RPC for ActionScript （頁面存檔備份，存於網際網路檔案館）: For Flash ActionScript 2.0

* as3-rpclib （頁面存檔備份，存於網際網路檔案館）: For Flex/Actionscript 3

* XML-RPC.NET: Open source library for .NET clients and servers

* XmlRpc-Light （頁面存檔備份，存於網際網路檔案館）: Client and server library for OCaml

* S-XML-RPC （頁面存檔備份，存於網際網路檔案館）: Client and server library for Common Lisp

* PHP-XML-RPC （頁面存檔備份，存於網際網路檔案館）: 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 （頁面存檔備份，存於網際網路檔案館）: A light XML-RPC client for Google Android

* XML-RPC for Tcl （頁面存檔備份，存於網際網路檔案館）: A Tcl implementation of XML-RPC providing client and server support

* [2] （頁面存檔備份，存於網際網路檔案館）: RebXR, a full client/server XML-RPC implementation for REBOL.



參看


* AJAX

* Component technologies

* List of Web service markup languages

* OPML

* Web 服務



參考資料



外部連結


* XML-RPC Homepage （頁面存檔備份，存於網際網路檔案館）

* Forum （頁面存檔備份，存於網際網路檔案館）

* Tutorials

* Technology Reports （頁面存檔備份，存於網際網路檔案館）

* Citations from CiteSeer （頁面存檔備份，存於網際網路檔案館）