2015-12-15 1 views
0

défaut SOAP Nom d'utilisateur jeton comporte les éléments suivants:Comment ajouter des éléments personnalisés à wsse authentificateur/Nom d'utilisateur dans Suds

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

Pour la même Plût à comme un des jetons supplémentaires dire de domaine & Organisation, le schéma devrait ressemble à ceci,

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

Donc, en utilisant la balise Element, j'ai ajouté les éléments, ici ça va.

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) 

Maintenant, lorsque je tente de définir les options pour le même:

client.set_options(wsse=security) 

reçois l'erreur suivante:

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

On dirait que le type de classe jeton est en cours de modification .. Suis-je manquant quelque chose

Merci

Répondre

2

Compris.

options de configuration du client doivent être SoapHeader au lieu de wsse, voici le code va

client.set_options(soapheaders=security)