【问题标题】:SUDS Custom HeaderSUDS 自定义标题
【发布时间】:2014-03-30 09:00:39
【问题描述】:

我是 Python 新手,我将 suds 用于 wsdl 客户端。如何为此创建自定义请求标头。

从 SOAP UI 获取 XML:

<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>

【问题讨论】:

    标签: python python-2.7 soap soap-client suds


    【解决方案1】:

    编辑-

    我意识到您可能询问的是 SOAP 标头,而不是 http 标头。如果是这样,请忽略我的回答。我的错。


    看这里: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 年 9 月)。它缺少您可能想要的各种功能,例如 gzip 压缩(因此,如果您使用旧的 suds 包,请不要费心添加“accept-encoding:gzip”标头)。各种叉子如雨后春笋般涌现。我相信其中最活跃的是 suds-jurko。

    【讨论】:

      【解决方案2】:

      这个sn-p来自官方SUDSdocumentation

      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)
      

      【讨论】:

      • 你好 piotr,寻求相同的答案,我发现你的答案是文档中显示的众多答案中唯一的一个。由于我的解决方案需要 2 个标题,我也会发布一个答案。尽我所能。
      【解决方案3】:

      我需要用 xmlns 添加 2 个肥皂头。 我在answer of @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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-09
        • 2013-09-02
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多