12.3. SOAP 入门

SOAP 的核心功能是调用远程函数。有很多公共访问的 SOAP 服务器提供简单的函数用于演示目的。

最受欢迎的公共访问 SOAP 服务器是 http://www.xmethods.net/。本例使用了一个演示函数,该函数接受一个美国邮政编码并返回该地区的当前温度。

示例 12.6. 获取当前温度

>>> from SOAPpy import SOAPProxy            1
>>> url = 'http://services.xmethods.net:80/soap/servlet/rpcrouter'
>>> namespace = 'urn:xmethods-Temperature'  2
>>> server = SOAPProxy(url, namespace)      3
>>> server.getTemp('27502')                 4
80.0
1 您可以通过代理类 SOAPProxy 访问远程 SOAP 服务器。该代理为您处理 SOAP 的所有内部细节,包括根据函数名称和参数列表创建 XML 请求文档、通过 HTTP 将请求发送到远程 SOAP 服务器、解析 XML 响应文档以及创建要返回的原生 Python 值。您将在下一节中看到这些 XML 文档的样子。
2 每个 SOAP 服务都有一个处理所有请求的 URL。所有函数调用都使用相同的 URL。此特定服务只有一个函数,但本章稍后您将看到 Google API 的示例,它有几个函数。服务 URL 由所有函数共享。每个 SOAP 服务还有一个由服务器定义的命名空间,该命名空间是完全任意的。它只是调用 SOAP 方法所需的配置的一部分。它允许服务器共享单个服务 URL 并在多个不相关的服务之间路由请求。这就像将 Python 模块划分为
3 您正在使用服务 URL 和服务命名空间创建 SOAPProxy。这不会与 SOAP 服务器建立任何连接;它只是创建一个本地 Python 对象。
4 现在,一切配置妥当,您可以像调用本地函数一样调用远程 SOAP 方法。您传递参数的方式与普通函数一样,并且您获得返回值的方式也与普通函数一样。但在幕后,发生了很多事情。

让我们来看看这些幕后的事情。