Zeep ValueError: недопустимое значение, присвоенное _soapheaders - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь сделать SOAP-вызов через Zeep.WSDL не содержит определений заголовков, но SOAP-сервер ожидает следующий заголовок:

<soapenv:Header>
  <ns2:UsernameToken xmlns:ns2="http://siebel.com/webservices">ORNODINTFC_WW@ORACLE.COM</ns2:UsernameToken>
</soapenv:Header>

Вот как я делаю это в соответствии с документацией zeep:

header = xsd.Element(
     '{http://siebel.com/webservices}UsernameToken',
      xsd.AnySimpleType()    
)

header_val = header('ORNODINTFC_WW@ORACLE.COM')

client.create_message(client.service, 'process', _soapheaders=[header_val],payload=msg, Mode='ODRFCQUERY', UserName='ORNODINTFC_WW@ORACLE.COM', Password='0r10nTkn')

Однако, Я получаю следующую ошибку для create_message

Traceback (most recent call last):
  File "<pyshell#119>", line 1, in <module>
    xml_msg = client.create_message(client.service, 'process', _soapheaders=[header_val],payload=msg, Mode='ODRFCQUERY', UserName='ORNODINTFC_WW@ORACLE.COM', Password='0r10nTkn')
  File "C:\Users\shubgang\AppData\Roaming\Python\Python36\site-packages\zeep\client.py", line 131, in create_message
operation_name, args, kwargs, client=self)
  File "C:\Users\shubgang\AppData\Roaming\Python\Python36\site-packages\zeep\wsdl\bindings\soap.py", line 68, in _create
serialized = operation_obj.create(*args, **kwargs)
  File "C:\Users\shubgang\AppData\Roaming\Python\Python36\site-packages\zeep\wsdl\definitions.py", line 200, in create
return self.input.serialize(*args, **kwargs)
  File "C:\Users\shubgang\AppData\Roaming\Python\Python36\site-packages\zeep\wsdl\messages\soap.py", line 59, in serialize
header = self._serialize_header(headers_value, nsmap)
  File "C:\Users\shubgang\AppData\Roaming\Python\Python36\site-packages\zeep\wsdl\messages\soap.py", line 327, in _serialize_header
raise ValueError("Invalid value given to _soapheaders")
ValueError: Invalid value given to _soapheaders

Пожалуйста, предложите, как это исправить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...