Я хотел бы установить соединение Soap под python 3 с Zeep (https://python -zeep.readthedocs.io / en / master / index.html ). Но я не понимаю, как изменить заголовки и тело XML !!
Я хочу иметь:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www...." xmlns:ns2="http://schemas....">
<SOAP-ENV:Header>
<ns2:UsernameToken>
<Username>__USERNAME__</Username>
<Password>__PASSWORD__</Password>
<Reference>__REFERENCE__</Reference>
</ns2:UsernameToken>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:requestAd/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Я сделал:
"""Doc Placeholder."""
from zeep import Client
from zeep import Settings
from zeep.xsd import ComplexType
from zeep.xsd import Element
from zeep.xsd import String as xString
settings = Settings(strict=False,
xml_huge_tree=True,
extra_http_headers={'http://www....', 'http://schemas...'})
wsdl = 'https://.......?wsdl'
client = Client(wsdl=wsdl, settings=settings)
header = Element('UsernameToken', ComplexType([Element('Username', xString()),
Element('Password', xString()),
Element('Reference', xString()),
]))
header_value = header(UsernameToken={'Username': '__USERNAME__',
'Password': '__PASSWORD__',
'Reference': '__REFERENCE__'})
Моя ошибка:
TypeError: ComplexType() got an unexpected keyword argument 'UsernameToken'.
Signature: `Username: xsd:string, Password: xsd:string, Reference: xsd:string`
Примечания:
Я перепробовал все решения в документации , но ничего не работает.