Я хотел бы передать заголовок «Сложный» службе SOAP с библиотекой zeep
Вот как это должно выглядеть
<soapenv:Header>
<something:myVar1>FOO</something:myVar1>
<something:myVar2>JAM</something:myVar2>
</soapenv:Header>
Я предполагаю, что мне удалось отправить заголовок таким образом
header = xsd.Element(
'{http://urlofthews}Header',
xsd.ComplexType([
xsd.Element(
'{http://urlofthews}myVar1',
xsd.String()),
xsd.Element(
'{http://urlofthews}myVar2',
xsd.String())
])
)
header_value = header(myVar1='FOO',myVar2='JAM')
print (header_value)
datasoap=client.service.UserRessourcesCatalog(requete,_soapheaders=[header_value])
Но я не понимаю, как объявить и передать пространство имен «что-то» в моем заголовке с помощью XSD.
Любая помощь ?
Спасибо заранее.
Наилучшие пожелания
Как указано в документации
http://docs.python-zeep.org/en/master/headers.html
«Еще один вариант — передать объект элемента lxml. Обычно это полезно, если wsdl не определяет заголовок мыла, но сервер ожидает его».
это мой случай, поэтому я попытался
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
ET.register_namespace('something', 'http://urlofthews')
headerXML = ET.Element("soapenv:Header")
var1 = ET.SubElement(headerXML, "something:myVar1")
var1.text = "FOO"
var2 = ET.SubElement(headerXML, "something:myVar2")
var2.text = "JAM"
headerDict=xmltodict.parse(ET.tostring(headerXML))
print (json.dumps(headerDict))
datasoap=client.service.UserRessourcesCatalog(requete,_soapheaders=headerDict)
Но я получаю: ComplexType() получил неожиданный аргумент ключевого слова u'soapenv:Header'. Подпись: ``