XML-RPC
From Wikipedia, the free encyclopedia
XML-RPC is a remote procedure call protocol which uses XML to encode its calls and HTTP as a transport mechanism. [1]
Contents |
[edit] History
XML-RPC was created in 1998 by Dave Winer of UserLand Software and Microsoft[2]. As new functionality was introduced, the standard evolved into what is now SOAP.
XML-RPC was patented by Phillip Merrick, Stewart Allen, and Joseph Lapp in April 2006, claiming benefit to a provisional application filed in March 1998. The patent is assigned to webMethods, located in Fairfax, VA. [3]
[edit] Usage
Some people prefer XML-RPC to SOAP because of its simplicity, minimalism, and ease of use.
JSON-RPC is similar to XML-RPC.
[edit] Data types
Name | Tag Example | Description |
---|---|---|
array |
<array> <data> <value><i4>1404</i4></value> <value><string>Something here</string></value> <value><i4>1</i4></value> </data> </array> |
Array of values, storing no keys |
base64 |
<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64> |
Base64-encoded binary data |
boolean |
<boolean>1</boolean> |
Boolean logical value (0 or 1) |
date/time |
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601> |
Date and time in ISO 8601 format |
double |
<double>-12.53</double> |
Double precision floating point number |
integer |
<i4>42</i4> or <int>42</int> |
Whole number, integer |
string |
<string>Hello world!</string> |
String of characters. Must follow XML encoding. |
struct |
<struct> <member> <name>foo</name> <value><i4>1</i4></value> </member> <member> <name>bar</name> <value><i4>2</i4></value> </member> </struct> |
Associative array |
nil |
<nil/>
|
Discriminated null value; an XML-RPC extension |
[edit] Examples
An example of a typical XML-RPC request would be:
<?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>40</i4></value> </param> </params> </methodCall>
An example of a typical XML-RPC response would be:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string>South Dakota</string></value> </param> </params> </methodResponse>
A typical XML-RPC fault would be:
<?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>
[edit] Implementations
[edit] C++
[edit] Objective-C / GNUstep / Cocoa
- XMLRPC Framework
- Cocoa XML-RPC Framework: Open Source XML-RPC framework written for use in Mac OS X Cocoa applications.
[edit] 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 http://www.xmlrpc.org/
[edit] 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
[edit] Jabber
- pyJabberXMLRPC: Python classes for Jabber
- Jabber-RPC: Over the Jabber protocol
[edit] Other
- JSON/XML-RPC Client and Server: Abstract away the differences between JSON-RPC and XML-RPC
- RemObjects SDK For XML-RPC, in addition to SOAP and others
- RealThinClient SDK: For Delphi/C++
- XML::RPC: Perl module implementation
- xmlrpclib: Included in Python's standard library since 2.2
- 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
[edit] See also
[edit] References
- ^ Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) Programming Web Services with XML-RPC. O'Reilly. First Edition.
- ^ Box, Don (2001-04-01). "A Brief History of SOAP". O'Reilly. http://webservices.xml.com/pub/a/ws/2001/04/04/soap.html. Retrieved on 2008-10-09.
- ^ Merrick et al. (2006-04-11). "US Patent 7,028,312". http://www.google.com/patents?id=WFV4AAAAEBAJ. Retrieved on 2008-09-18.