Как вы думаете, вы могли бы принять мой ответ? Вопрос по-прежнему помечен как вопрос Zeep - так что, пока ваш ответ работает с использованием необработанного метода - ответ, который я предоставил, использует библиотеку Zeep.

ел бы передать «сложный» заголовок службе 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

«Другой вариант - передать объект Element 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 '. Подпись: ``