簡體   English   中英

使用SUDS測試WSDL

[英]Using SUDS to test WSDL

有誰知道一個很好的SUDS教程。 我試圖在WSDL文件上運行測試,我無法找到有關如何執行此操作的任何信息。 SUDS與SOAPy有很大的不同嗎?任何人都建議它對存儲在WSDL文件中的函數運行冒煙測試。

我已經讀過Python 2.6+不再支持SOAPAy。 這是真的?

我有一個我輸入的WSDL文件:

from suds.client import Client

client = Client('http://10.51.54.50/ptz.wsdl')

client.service.GetNode()

我收到了這個錯誤:

    in open
    response = self._open(req, data)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 407, in _open
    '_open', req)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 367, in  _call_chain
    result = func(*args)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1146, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1121, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>

有誰知道為什么會這樣?

我可以通過瀏覽器連接到此文件。 我已經安裝了所有的泡沫包。 是否還需要其他設置?

Suds非常簡單易用。

from suds.client import Client

client = Client("http://example.com/foo.wsdl")
client.service.someMethod(someParameter)

someMethod是WSDL中描述的方法的名稱。

在我的情況下,這是一個愚蠢的錯誤(就像任何其他錯誤)。

我用來初始化我的服務的URL是這樣的

Uri httpUri = new Uri("http://localhost:8000/CalculatorService");

我可以從與服務在同一台機器上運行的python客戶端訪問此服務。 我可以在本地和遠程計算機上瀏覽瀏覽器中的wsdl。 但是,當我嘗試從遠程計算機訪問此服務時,我收到連接拒絕錯誤。 奇怪的是,在wireshark中,我可以看到服務將wsdl發送回遠程客戶端。 浪費了幾個小時后,我啟用了日志記錄

logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG)
logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)

日志顯示suds從服務器下載了wsdl,但之后它嘗試連接到localhost:8000。 這解釋了連接拒絕錯誤。 我剛剛將WCF服務器上的URI更改為

Uri httpUri = new Uri("http://192.168.0.1:8000/CalculatorService");

這解決了我的問題

拒絕連接表示服務器不存在。 你可以在瀏覽器中或通過curl訪問http://10.51.54.50/ptz.wsdl嗎? 如果沒有,首先運行SOAP服務然后再試一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM