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] Overview
XML-RPC is a very simple protocol, defining only a handful of data types and commands[2], and the entire description can be printed on two pages of paper. This is in stark contrast to most RPC systems, where the standards documents often run into the hundreds of pages and require considerable software support in order to be used.
[edit] History
XML-RPC was created in 1998 by Dave Winer of UserLand Software and Microsoft[3]. 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. [4]
[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
<array>
<data>
<value><i4>1404</i4></value>
<value><string>Something here</string></value>
<value><i4>1</i4></value>
</data>
</array>
<struct>
<member>
<name>foo</name>
<value><i4>1</i4></value>
</member>
<member>
<name>bar</name>
<value><i4>2</i4></value>
</member>
</struct>
[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>

