有没有人知道一个好的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>
有谁知道为什么会这样?
我可以通过浏览器连接到此文件。我已经安装了所有的泡沫包。是否还需要其他设置?
答案 0 :(得分:16)
Suds使用非常简单。
from suds.client import Client
client = Client("http://example.com/foo.wsdl")
client.service.someMethod(someParameter)
someMethod
是WSDL中描述的方法的名称。
答案 1 :(得分:2)
拒绝连接表示服务器不在那里。您可以在浏览器中访问http://10.51.54.50/ptz.wsdl还是通过curl访问?如果没有,首先先运行SOAP服务,然后再试一次。
答案 2 :(得分:2)
在我的情况下,这是一个愚蠢的错误(就像任何其他错误一样)。
我用来初始化服务的网址就像
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");
这解决了我的问题