如何在Suds中向Wsse Security/Username令牌添加自定义元素



默认SOAP用户名令牌具有以下元素:

 <wsse:UsernameToken>
        <wsse:Username>USERNAME</wsse:Username>
        <wsse:Password>PASSWORD</wsse:Password>
 </wsse:UsernameToken>

出于同样的原因,我想要一个额外的代币,比如Domain&组织,架构应该是这样的,

 <wsse:UsernameToken>
        <wsse:Username>USERNAME</wsse:Username>
        <wsse:Password>PASSWORD</wsse:Password>
        <Organization>ORGANIZATION</Organization>
        <Domain>DOMAIN</Domain>
 </wsse:UsernameToken>

所以使用Element标记,我添加了元素,就这样。

wsse = ('wsse', 'http://schemas.xmlsoap.org/ws/2002/12/secext')
security = Element('Security', ns=wsse)
usernametoken = Element('UsernameToken', ns=wsse)
usernametoken.insert(Element('Username', ns=wsse).setText('USERNAME'))
usernametoken.insert(Element('Password', ns=wsse).setText('PASSWORD'))
usernametoken.insert(Element('Organization').setText('ORGANIZATION'))
usernametoken.insert(Element('Domain').setText('DEFAULT'))
security.insert(usernametoken)

现在,当我尝试设置相同的选项时:

client.set_options(wsse=security)

我得到以下错误:

AttributeError: "wsse" must be: (<class suds.wsse.Security at 0xf552c0>,)

看起来令牌类的类型正在更改。。。我是不是遗漏了什么

感谢

想明白了。

客户端设置选项应该是soapheeader而不是wsse,这里的代码是

client.set_options(soapheaders=security)

相关内容

  • 没有找到相关文章

最新更新