2015-12-15 61 views
0

默認SOAP用戶名令牌包含以下元素:如何自定義元素添加到WSSE安全/用戶名令牌在肥皂水

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

出於同樣的我會喜歡的其他令牌說域&組織架構應看起來像這樣,

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

因此,使用元素標記,我追加元素,在這裏它去。

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

貌似令牌類的類型正在發生變化.. 。我是否缺少東西

謝謝

回答

2

想通了。

客戶端設置選項應該SOAPHEADER而不是WSSE,這裏的代碼去

client.set_options(soapheaders=security)