Zeep的Python SOAP客户端 - 访问密码保护wsdl

问题描述:

我想用zeep创建一个python soap客户端,但在尝试访问wsdl时遇到了一些问题。无论我尝试过多少种现有的网络解决方案,他们都不再工作,或者只是我的情况有点不同。最有希望的是在官方文档ZEEP解决方案,但它仍然不是做得比较工作:Zeep的Python SOAP客户端 - 访问密码保护wsdl

from requests import Session 
from requests.auth import HTTPBasicAuth # or HTTPDigestAuth, or OAuth1, etc. 
from zeep import Client 
from zeep.transports import Transport 

session = Session() 
session.auth = HTTPBasicAuth(user, password) 
client = Client('https://url/to/my_wsdl.wsdl', 
    transport=Transport(session=session)) 

但我得到一个错误:

File "C:\Python36-32\lib\site-packages\zeep\client.py", line 124, in __init__ 
    self.wsdl = Document(wsdl, self.transport, strict=strict) 
    File "C:\Python36-32\lib\site-packages\zeep\wsdl\wsdl.py", line 82, in __init__ 
    root_definitions.resolve_imports() 
    File "C:\Python36-32\lib\site-packages\zeep\wsdl\wsdl.py", line 234, in resolve_imports 
    binding.resolve(self) 
    File "C:\Python36-32\lib\site-packages\zeep\wsdl\definitions.py", line 128, in resolve 
    operation.resolve(definitions) 
    File "C:\Python36-32\lib\site-packages\zeep\wsdl\bindings\soap.py", line 428, in resolve 
    self.output.resolve(definitions, self.abstract.output_message) 
    File "C:\Python36-32\lib\site-packages\zeep\wsdl\messages\soap.py", line 285, in resolve 
    self.body = self._resolve_body(info['body'], definitions, parts) 
    File "C:\Python36-32\lib\site-packages\zeep\wsdl\messages\soap.py", line 423, in _resolve_body 
    element = part.element.clone() 
AttributeError: 'NoneType' object has no attribute 'clone' 

我缺少什么或者做错了吗?我在Windows 10上使用python3.6 32bit。所有软件包都使用pip新安装。

所以显然现在还没有解决这个问题的方法。也许在未来Zeep发布这个bug将被修复。

但是我找到了解决方法。而不是Zeep使用SUDS(或用于python3.x的suds-py3)。使用用户和密码要求从wsdl创建客户端在这里更加简单。只需使用:

from suds.client import Client 

client = Client(url=WSDL_URL, 
       username=WSDL_USERNAME, 
       password=WSDL_PASSWORD) 

zeep的作者在这里。似乎你在Zeep中遇到了一个bug。您是否可以提交http://docs.python-zeep.org/en/master/reporting_bugs.htmlhttps://github.com/mvantellingen/python-zeep/issues的文件?

我会尽快看看它。

+0

https://github.com/mvantellingen/python-zeep/issues/437完成。感谢帮助! – Devlige