多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 12.3. 步入 SOAP 调用远程函数是 SOAP 的核心功能。有很多提供公开 SOAP 访问的服务器提供用于展示的简单功能。 最受欢迎的 SOAP 公开访问服务器是 [http://www.xmethods.net/](http://www.xmethods.net/)。这个例子使用了一个展示函数,可以根据美国邮政编码返回当地气温。 ## 例 12.6. 获得现在的气温 ``` >>> from SOAPpy import SOAPProxy >>> url = 'http://services.xmethods.net:80/soap/servlet/rpcrouter' >>> namespace = 'urn:xmethods-Temperature' >>> server = SOAPProxy(url, namespace) >>> server.getTemp('27502') 80.0 ``` | | | | --- | --- | | \[1\] | 你通过 `SOAPProxy` 这个代理 (proxy) 类访问远程 SOAP 服务器。这个代理处理了所有的 SOAP 内部事务,其中包括:根据函数名和参数列表创建 XML 请求文档,并将这个请求文档通过 HTTP 发送到远程 SOAP 服务器;解析 XML 返回文档,并创建本地的 Python 返回值。在下一节中你将看到这个 XML 文档。 | | \[2\] | 每个 SOAP 服务都有一个 URL 用以处理所有请求。相同的 URL 可以用于所有的函数请求。每个特定服务则只有一个函数。但稍后你将看到的 Google API 却有多个函数。这个服务的 URL 提供给所有函数分享。每个 SOAP 服务都有一个命名空间 (namespace),这个命名空间是由服务器任意命名的。这不过是为调用 SOAP 方法设置的。它使得服务器让多个不相关的服务共享服务 URL 和路径请求成为可能。这与 Python 中模块相对于[包](../xml_processing/packages.html "9.2. 包")的关系类似。 | | \[3\] | 这里你创建了包含服务 URL 和服务命名空间的 `SOAPProxy`。此时还不会连接到 SOAP 服务器;仅仅是建立了一个本地 Python 对象。 | | \[4\] | 到此为止,如果你的设置完全正确,应该可以向调用本地函数一样调用远程 SOAP 方法。这和给普通函数传递参数并接收返回值一样,但在背后却隐藏着很多的工作。 | 让我们看一看这些背后的工作。