<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 12.4.? SOAP 網絡服務查錯 SOAP 提供了一個很方便的方法用以查看背后的情形。 `SOAPProxy` 的兩個小設置就可以打開查錯模式。 ## 例?12.7.? SOAP 網絡服務查錯 ``` >>> from SOAPpy import SOAPProxy >>> url = 'http://services.xmethods.net:80/soap/servlet/rpcrouter' >>> n = 'urn:xmethods-Temperature' >>> server = SOAPProxy(url, namespace=n) >>> server.config.dumpSOAPOut = 1 >>> server.config.dumpSOAPIn = 1 >>> temperature = server.getTemp('27502') *** Outgoing SOAP ****************************************************** <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:getTemp xmlns:ns1="urn:xmethods-Temperature" SOAP-ENC:root="1"> <v1 xsi:type="xsd:string">27502</v1> </ns1:getTemp> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ************************************************************************ *** Incoming SOAP ****************************************************** <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:getTempResponse xmlns:ns1="urn:xmethods-Temperature" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <return xsi:type="xsd:float">80.0</return> </ns1:getTempResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ************************************************************************ >>> temperature 80.0 ``` | | | | --- | --- | | \[1\] | 首先,和平常一樣,建立帶有服務 URL 和命名空間的 `SOAPProxy`。 | | \[2\] | 然后,通過設置 `server.config.dumpSOAPIn` 和 `server.config.dumpSOAPOut` 打開查錯模式。 | | \[3\] | 最后,和平常一樣,調用遠程 SOAP 方法。SOAP 庫將會輸出送出的 XML 請求文檔和收到的 XML 返回文檔。這是 `SOAPProxy` 為你做的所有工作。有點恐怖,不是嗎?讓我們來分析一下。 | 大部分 XML 請求文檔都基于模板文件。忽略所有命名空間聲明這些對于所有 SOAP 調用都一成不變的東西。這個 “函數調用” 的核心是`&lt;Body&gt;` 當中的部分: ``` <ns1:getTemp xmlns:ns1="urn:xmethods-Temperature" SOAP-ENC:root="1"> <v1 xsi:type="xsd:string">27502</v1> </ns1:getTemp> ``` | | | | --- | --- | | \[1\] | 這個元素名 `getTemp` 就是函數名。`SOAPProxy` 使用 [`getattr` 作為分發器](../scripts_and_streams/handlers_by_node_type.html "10.5.?根據節點類型創建不同的處理器")。有別于使用方法名分別調用本地方法,這里使用方法名構造了一個 XML 請求文檔。 | | \[2\] | 函數的 XML 元素被存儲于一個特別的命名空間,這個命名空間就是你在建立 `SOAPProxy` 對象時所指定的那個命名空間。也不必為 `SOAP-ENC:root` 而苦惱,因為它也是基于模板文件的。 | | \[3\] | 函數的參數也被記入 XML 文檔。`SOAPProxy` 查看并確定每個參數的數據類型 (這里是 string 字符串類型)。參數的數據類型記入 `xsi:type` 屬性,并在其后記入實際的字符串值。 | 返回的 XML 文檔同樣容易理解,重點在于知道應該忽略掉哪些內容。把注意力集中在 `&lt;Body&gt;` 部分: ``` <ns1:getTempResponse xmlns:ns1="urn:xmethods-Temperature" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <return xsi:type="xsd:float">80.0</return> </ns1:getTempResponse> ``` | | | | --- | --- | | \[1\] | 服務器傳回的值記錄在 `&lt;getTempResponse&gt;` 部分的幾行中。通常包括函數名和回應 `(Response)`。當然其他的內容也可能出現在這里,但 `SOAPProxy` 所重視的不是這里的元素名,而是命名空間。 | | \[2\] | 服務器返回時所使用的命名空間就是在請求時所用的命名空間,也就是在創建 `SOAPProxy` 對象時所指定的命名空間。本章稍后的部分中,我們將看到在創建 `SOAPProxy` 對象時忘記指定功能名空間會怎樣。 | | \[3\] | 這是返回值和它的數據類型 (浮點類型 float)。`SOAPProxy` 使用顯式數據類型創建一個本地數據類型的 Python 對象并返回之。 |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看