2017-05-09 17 views
1

zeep으로 파이썬 비누 클라이언트를 만들려고하지만 wsdl에 액세스하려고 할 때 문제가 발생합니다. 웹에서 몇 가지 기존 솔루션을 사용해 보았는데 아무리 노력해도 문제가 해결되지 않았거나 제 경우가 조금 다릅니다. 대부분의 유망 공식 zeep 워드 프로세서에서 솔루션이지만, 여전히하지 않습니다 잘 작동 :암호로 보호 된 wsdl에 액세스하는 Zeep이있는 Python SOAP 클라이언트

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)) 

을하지만 오류 얻을 : I가 없거나 잘못을하고있는 중이 야 무엇

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 32 비트를 사용하고 있습니다. 모든 패키지는 pip를 사용하여 새로 설치되었습니다.

답변

0

분명히 지금이 문제에 대한 해결책이 없습니다. 어쩌면 Zeep의 향후 릴리스에서이 버그가 수정 될 것입니다.

그러나 해결 방법을 찾았습니다. Zeep 대신 SUDS (또는 python3.x의 경우 suds-py3)를 사용하십시오. 사용자 및 암호 요구 사항이있는 wsdl에서 클라이언트를 생성하는 것이 여기에서 훨씬 간단합니다. 그냥 다음을 사용하십시오 :

from suds.client import Client 

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