【发布时间】:2014-10-20 19:34:20
【问题描述】:
我有一个在 Windows 7 机器上运行的 ASP.NET 网络服务。我有两个 Linux 机器(Ubuntu 12.04),我正在尝试使用 Python 2.7.3 和 Suds 0.4 来访问 Web 服务。我正在尝试执行的脚本如下:
from suds import client
from suds.transport.https import WindowsHttpAuthenticated
url = "https://webserver.mydomain.com/webservice/services.asmx?WSDL"
ntlm = WindowsHttpAuthenticated(username = "user", password = "pwd")
c = client.Client(url, transport = ntlm)
resp = c.service.GetData()
在我的一个 Linux 机器上,此代码完美执行,resp 将包含从 Web 服务返回的预期数据。在另一个 Linux 机器上,我收到以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/var/www/dev/local/lib/python2.7/site-packages/suds/client.py", line 542, in __call__
return client.invoke(args, kwargs)
File "/var/www/dev/local/lib/python2.7/site-packages/suds/client.py", line 602, in invoke
result = self.send(soapenv)
File "/var/www/dev/local/lib/python2.7/site-packages/suds/client.py", line 643, in send
result = self.succeeded(binding, reply.message)
File "/var/www/dev/local/lib/python2.7/site-packages/suds/client.py", line 678, in succeeded
reply, result = binding.get_reply(self.method, reply)
File "/var/www/dev/local/lib/python2.7/site-packages/suds/bindings/binding.py", line 149, in get_reply
soapenv.promotePrefixes()
AttributeError: 'NoneType' object has no attribute 'promotePrefixes'
我需要一些关于哪些设置等可能导致两台机器之间的行为差异的想法。提前致谢!
【问题讨论】:
-
试试 suds-jurko 看看 bug 是否仍然存在:pypi.python.org/pypi/suds-jurko
-
@SimeonVisser - 尝试 suds-jurko 0.6 并得到同样的错误。我也在 Windows 7 机器上尝试过,在那里也遇到了同样的错误。但是感谢您的想法。
-
此页面是否有帮助:bitbucket.org/jurko/suds/issue/50/… ?它可能是格式错误的 WSDL 文件。
-
链接听起来很有希望,但没有骰子。客户端和服务器都使用 SOAP 1.1。强制使用 SOAP 1.2 并得到相同的错误。改变一个或另一个,我得到“soap:VersionMismatch”异常,正如预期的那样。
标签: python web-services soap ntlm suds