XML-RPC HOWTO
Prev Next

4. Common XML-RPC Interfaces

Several XML-RPC servers provide built-in methods. These aren't part of XML-RPC itself, but they make handy add-ons.

4.1. Introspection: Discovering Server APIs

Edd Dumbill proposed the following set of methods:


array
 
system.listMethods
 ()

string
 
system.methodHelp
 (
string
 

methodName

)

array
 
system.methodSignature
 (
string
 

methodName

)

If a server supports these methods, you can ask it to print out some documentation:

import xmlrpclib
server = xmlrpclib.Server("http://xmlrpc-c.sourceforge.net/api/sample.php")
for method in server.system.listMethods():
    print method
    print server.system.methodHelp(method)
    print

These methods are currently supported by servers written in PHP, C and Microsoft .NET. Partial introspection support is included in recent updates to UserLand Frontier. Introspection support for Perl, Python and Java is available at the XML-RPC Hacks page. Please feel free to add introspection support to other XML-RPC servers!

Various client-side tools (documentation generators, wrapper generators, and so on) can be found at the XML-RPC Hacks page as well.

4.2. Boxcarring: Sending Multiple Requests at Once

If you're writing an XML-RPC client which makes lots of small function calls, you may discover that your round-trip time is fairly high, thanks to Internet backbone latency. Some servers allow you to batch up multiple requests using the following function:


array
 
system.multicall
 (
array
 

calls

)

You can find more information in the system.multicall RFC .

This method is currently supported by servers written in C and UserLand Frontier. Servers written in Python and Perl can use the code at the XML-RPC Hacks page.


Prev Home Next
XML-RPC vs. Other Protocols   A Sample API: sumAndDifference