XML-RPC

From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search

XML-RPC is a remote procedure call protocol which uses XML to encode its calls and HTTP as a transport mechanism.[1]

Contents

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]

Usage

XML-RPC is believed to be simpler to use and understand than SOAP.

JSON-RPC is similar to XML-RPC.

Data types

Common datatypes are converted into their XML equivalents with example values shown below:

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

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>

Criticism

Critics of XML-RPC argue that RPC calls can be made with plain XML, and that XML-RPC doesn't add any value over XML. Both XML-RPC and XML require an application level schema, such as how to spell the field names, and neither require any additional schema to define how to automatically serialize language-level objects into XML. Libraries to serialize objects into plain XML are ubiquitous. Furthermore, plain XML is much more concise than XML-RPC. Consider for example:

 <struct>
   <foo>1</foo>
   <bar>2</bar>
 </struct>

versus:

 <struct>
   <member>
     <name>foo</name>
     <value><i4>1</i4></value>
   </member>
   <member>
     <name>bar</name>
     <value><i4>2</i4></value>
   </member>
 </struct>

See: http://stackoverflow.com/questions/1376688/what-is-the-benefit-of-xmlrpc-over-plain-xml

Implementations

C++

Objective-C / GNUstep / Cocoa

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/

Java

XMPP

Other

See also

References

  1. Simon St. Laurent, Joe Johnston, Edd Dumbill. (June 2001) Programming Web Services with XML-RPC. O'Reilly. First Edition.
  2. Box, Don (1 April 2001). "A Brief History of SOAP". O'Reilly. http://webservices.xml.com/pub/a/ws/2001/04/04/soap.html. Retrieved 9 October 2008. 
  3. Merrick et al. (11 April 2006). "US Patent 7,028,312". http://www.google.com/patents?id=WFV4AAAAEBAJ. Retrieved 18 September 2008. 

External links

bg:XML-RPC ca:XML-RPC cs:XML-RPC de:XML-RPC es:XML-RPC fr:XML-RPC ko:XML-RPC it:XML-RPC ja:XML-RPC pl:XML-RPC pt:XML-RPC ru:XML-RPC uk:XML-RPC zh:XML-RPC

Personal tools

Served in 0.241 secs.