12.3. 步入 SOAP

优质
小牛编辑
124浏览
2023-12-01

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 这个 proxy 类访问远程 SOAP 服务器。这个 proxy 处理了所有的 SOAP 内部事务,其中包括:根据函数名和参数列表创建 XML 请求文档并将这个请求文档通过 HTTP 发送到远程 SOAP 服务器,解析 XML 返回文档并创建 Python 原始返回值。在下一节中你将看到这个 XML 文档。
2每个 SOAP 服务都有一个 URL 用以处理所有请求。 相同的 URL 可以用于所有的函数请求。每个特定服务则只有一个函数。但稍后你将看到的 Google API 却有多个函数。这个服务的 URL 提供给所有函数分享。每个 SOAP 服务都有一个命名空间(namespace),这个命名空间是由服务器任意命名的。这不过是为了调用 SOAP 方法而设置的。它使得服务器为多个不相关的服务提供服务 URL 和路径请求共享成为可能。这与 Python 中模块到 packages 的关系类似。
3这里你创建了包含服务 URL 和服务命名空间的 SOAPProxy。这与 SOAP 服务器无关,仅仅是建立了一个本地 Python 对象。
4到此为止,如果你的设置完全正确,应该可以向调用本地函数一样调用远程 SOAP 方法。像给普通函数传递参数并接收返回一样,但在这背后却隐藏着很多的工作。

让我们看一看这些背后的工作。