4. 常用的 XML-RPC 接口

一些 XML-RPC 服务器提供了内置方法。这些方法不是 XML-RPC 本身的一部分,但它们是非常方便的附加功能。

4.1. 内省:发现服务器 API

Edd Dumbill 提议了以下方法集

array system.listMethods ()
string system.methodHelp (string methodName)
array system.methodSignature (string methodName)

如果服务器支持这些方法,您可以要求它打印一些文档

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

目前,用 PHP、C 和 Microsoft .NET 编写的服务器支持这些方法。UserLand Frontier 的最新更新中包含了部分内省支持。Perl、Python 和 Java 的内省支持可在 XML-RPC Hacks 页面找到。请随时为其他 XML-RPC 服务器添加内省支持!

各种客户端工具(文档生成器、包装器生成器等等)也可以在 XML-RPC Hacks 页面找到。

4.2. 批量处理:一次发送多个请求

如果您正在编写一个进行大量小型函数调用的 XML-RPC 客户端,您可能会发现由于互联网骨干网延迟,您的往返时间相当高。一些服务器允许您使用以下函数批量处理多个请求

array system.multicall (array calls)

您可以在 system.multicall RFC 中找到更多信息。

目前,用 C 和 UserLand Frontier 编写的服务器支持此方法。用 Python 和 Perl 编写的服务器可以使用 XML-RPC Hacks 页面上的代码。