Я только начал работать с одним из API-интерфейсов DHL- SOAP и использую zeep для выполнения запросов к API. API ожидает и Элемент Аутентификация примерно так:
...
<soapenv:Header>
<cis:Authentification>
<cis:user>USER</cis:user>
<cis:signature>PASSWORD</cis:signature>
</cis:Authentification>
</soapenv:Header>
...
Я попытался передать аутентификацию как часть _soapheaders, как описано в документации zeep, ни в записи dict, ни в xsd. Кажется, что запись элементов работает.
from zeep import Client
from zeep import xsd
client = Client('<URL_TO_WSDL>')
auth_header = {'user': 'user', 'signature': 'signature'}
# dict approach
client.service.DHL_SERVICE(_soapheaders={'Authentification': auth_header})
# xsd approach
header = xsd.Element('Authentification',
xsd.ComplexType([
xsd.Element('user', xsd.String()),
xsd.Element('signature', xsd.String())
])
)
header_values = header(user='user', signature='signature')
client.service.DHL_SERVICE(_soapheaders=[header_values])
Я не нахожу полезной информации в документах DHL, кроме документации Zeep.
Заранее спасибо!
С уважением