<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    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 服務器。這個代理處理了所有的 SOAP 內部事務,其中包括:根據函數名和參數列表創建 XML 請求文檔,并將這個請求文檔通過 HTTP 發送到遠程 SOAP 服務器;解析 XML 返回文檔,并創建本地的 Python 返回值。在下一節中你將看到這個 XML 文檔。
    2 每個 SOAP 服務都有一個 URL 用以處理所有請求。相同的 URL 可以用于所有的函數請求。每個特定服務則只有一個函數。但稍后你將看到的 Google API 卻有多個函數。這個服務的 URL 提供給所有函數分享。每個 SOAP 服務都有一個命名空間 (namespace),這個命名空間是由服務器任意命名的。這不過是為調用 SOAP 方法設置的。它使得服務器讓多個不相關的服務共享服務 URL 和路徑請求成為可能。這與 Python 中模塊相對于的關系類似。
    3 這里你創建了包含服務 URL 和服務命名空間的 SOAPProxy。此時還不會連接到 SOAP 服務器;僅僅是建立了一個本地 Python 對象。
    4 到此為止,如果你的設置完全正確,應該可以向調用本地函數一樣調用遠程 SOAP 方法。這和給普通函數傳遞參數并接收返回值一樣,但在背后卻隱藏著很多的工作。

    讓我們看一看這些背后的工作。

    97av