2015-12-15 9 views
0

По умолчанию SOAP Имя пользователя Токен имеет следующие элементы:Как добавлять пользовательские элементы в Wsse безопасности/Имя пользователя Токен Suds

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

Am получаю следующее сообщение об ошибке:

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

Похоже, тип маркера класса меняется .. Я что-то упустил

Сказал

ответ

2

Выяснил это.

настройки клиента параметры должны быть SoapHeader вместо wsse, вот код идет

client.set_options(soapheaders=security)