Comment passer des en-têtes SOAP dans python SUDS qui ne sont pas définis dans le fichier WSDL
J'ai un appareil photo de mon réseau que j'essaie de connecter avec de la mousse, mais la mousse n'est pas envoyer toutes les informations nécessaires. J'ai besoin de mettre un peu plus en-têtes soap ne sont pas définis dans le fichier WSDL afin que la caméra puisse comprendre le message. Tous les en-têtes sont contenues dans une enveloppe SOAP et puis la mousse de commande doit être dans le corps du message.
J'ai vérifié les suds à site web
et il dit de passer dans les en-têtes comme suit: (Ce passe dans l'élément en-tête, mais j'ai une enveloppe donc je ne suis pas sûr de savoir comment cette entrée)
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)
Maintenant, je ne suis pas sûr de comment je pourrais le mettre en œuvre. Disons, par exemple, j'ai le dessous de l'en-tête:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP
ENC="http://www.w3.org/2003/05/soap-encoding"
<wsa:MessageID SOAP-ENV:mustUnderstand="true">urn:uuid:43268c01-f09c6</wsa:MessageID>
<SOAP-ENV:Header>
Utilisation de ce produit ou un exemple similaire à ce que quelqu'un sait comment je pourrais passer un message SOAP valide pour les services ciblés?
Grâce
source d'informationauteur chrissygormley
Vous devez vous connecter pour publier un commentaire.
J'ai travaillé sur la façon d'entrer dans de nouveaux en-têtes et les espaces de noms dans la mousse.
Comme indiqué ci-dessus, vous créez un Élément et de le transmettre comme un soapheader de la manière suivante:
Mais si vous souhaitez ajouter un espace de noms j'ai trouvé que l'ajout d'un préfixe semble de faire le tour. Ainsi, lorsque vous créez l'un des éléments que vous ajoutez
addPrefix
. Je ne suis pas sûr si c'était la façon dont il a été prévu de le faire mais elle du travail.La
p = 'SOAP-ENC'
peut être n'importe quel préfixeeg. wsa
et lau = http://address
est l'adresse de l'espace de noms.Un script complet qui irait pourrait être:
Ce déplace la caméra. Pour modifier le type de savon-enveloppe vérifier ma prochaine question.
Vous pouvez ajouter l'exploitation forestière dans ce script whci permettent de vous de vérifier ce xml commande que vous avez envoyé, ce qui est pratique:
L'emplacement peut être mis dans le script comme une option si l'emplacement n'est pas dans le fichier wsdl.