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 透過向裝置了這個協定的伺服器發出 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 （頁面存檔備份，存於網際網路檔案館）