Ph: 19980717

XML-RPC

From Wikipedia, the free encyclopedia

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]

[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

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></dateTime.iso8601>
19980717T14:08:55
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 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. ^ Dave Winer. (June 15, 1999) XML-RPC Specification UserLand Software, Inc. ^ Box, Don (2001-04-01). "A Brief History of SOAP". O'Reilly. Retrieved on 2008-10-09. ^ Merrick et al. (2006-04-11). "US Patent 7,028,312". Retrieved on 2008-09-18.

[edit] External links


You are viewing a mobilized version of this site...
View original page here

How do you rate mobile version of this page?

Mobilized by Mowser Mowser