Пользовательский заголовок SUDS

Я новичок в Python и использую suds для клиента wsdl. Как я могу создать собственный заголовок запроса для этого.

XML получить из пользовательского интерфейса SOAP:

<soapenv:Header>
      <sbus:SBusContext message-tracking-id="?" correlation-id="?" entry-dtime="?" timestamp="?" entry-system="?" entry-system-principal="?" entry-url="?" priority="?">
         <!--Optional:-->
         <sbus:Keys>
            <!--1 or more repetitions:-->
            <sbus:Key keyType="?" keyValDataType="string">
               <sbus:KeyValue>?</sbus:KeyValue>
            </sbus:Key>
         </sbus:Keys>
         <!--Optional:-->
         <sbus:ExtContext>?</sbus:ExtContext>
      </sbus:SBusContext>
   </soapenv:Header>

person Victor    schedule 30.03.2014    source источник


Ответы (3)


РЕДАКТИРОВАТЬ -

Я понял, что вы, вероятно, спрашиваете о заголовке SOAP, а не о http-заголовке. Если да, то игнорируйте мой ответ. Виноват.


Взгляните сюда: https://stackoverflow.com/questions/2804062/how-to-add-http-headers-in-suds-0-3-6

Вы можете добавить заголовок при создании клиента следующим образом:

client = suds.client.Client(url, headers={'key': 'value'})

Или после создания клиента, используя set_options следующим образом:

client.set_options(headers={'key2': 'value'})

Стоит отметить, что исходный пакет suds больше не поддерживается (последний выпуск в сентябре 2010 г.). В нем отсутствуют различные функции, которые могут вам понадобиться, такие как сжатие gzip (поэтому не беспокойтесь о добавлении заголовка «accept-encoding:gzip», если вы используете старый пакет suds). Возникли различные вилки. Я считаю, что наиболее активным из них является судс-юрко.

person Shahaf    schedule 30.04.2014

Этот фрагмент из официальной документации SUDS:

from suds.sax.element import Element
client = client(url)
ssnns = ('ssn', 'http://namespaces/sessionid')
ssn = Element('SessionID', ns=ssnns).setText('123')
client.set_options(soapheaders=ssn) 
result = client.service.addPerson(person)
person Piotr Sz    schedule 10.07.2017
comment
привет, Петр, ищу тот же ответ, я нахожу ваш ответ единственным рабочим из многих, показанных в документации. поскольку для моего решения требуется 2 заголовка, я также опубликую ответ. все мое лучшее. - person alex; 18.05.2020

мне нужно было добавить 2 заголовка мыла с xmlns. я нашел решение после ответа @piotr sz. вот решение, как мне нужно:

userName = Element('UserName').setText(fco.user)
password = Element('Password').setText(fco.pwd)
fdxns = Attribute('xmlns', "http://fdx.co.il/Authentication")
for field in userName, password:
    field.append(fdxns)
client.set_options(soapheaders=(userName, password))
person alex    schedule 18.05.2020