Ho ricevuto qualche esempio di codice php per chiamare un servizio SOAP che ora ho bisogno di convertire in Python. Nel codice php si misero le intestazioni come segue:Perché non posso impostare le intestazioni SOAP in pysimplesoap?
$auth = array();
$auth['token'] = 'xxx';
if ($auth) {
// add auth header
$this->clients[$module]->__setSoapHeaders(
new SoapHeader(
$namespace,
'auth',
$auth
)
);
}
Quindi l'intestazione auth
dovrebbe assomigliare a questa: ['token' => 'xxx']
. Poi ho caricato il WSDL in SoapUI, che mi ha dato il seguente esempio xml:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sub="https://example.com/path/to/sub">
<soapenv:Header>
<sub:auth>
<token>?</token>
<!--Optional:-->
<user_id>?</user_id>
<!--Optional:-->
<user_token>?</user_token>
</sub:auth>
</soapenv:Header>
<soapenv:Body>
<sub:customer_logos_pull>
<!--Optional:-->
<language>?</language>
<!--Optional:-->
<limit>?</limit>
<!--Optional:-->
<options_utc>?</options_utc>
</sub:customer_logos_pull>
</soapenv:Body>
</soapenv:Envelope>
In pysimplesoap ora provare qualcosa di simile:
from pysimplesoap.client import SoapClient
WSDL = 'https://example.com/some/path/sub.wsdl'
TOKEN = 'xxx'
client = SoapClient(wsdl=WSDL, trace=True)
client['auth'] = {'token': TOKEN}
print client.customer_logos_pull({})
ma ottengo un errore che dice ExpatError: not well-formed (invalid token): line 1, column 0
, che ha un senso , perché nel xML Accesso vedo che l'intestazione è vuota:
<soap:Header/>
ho provato variando il codice includendo il sub:
b efore auth
piace questo: client['sub:auth'] = {'token': TOKEN}
, ma ottengo lo stesso errore.
Qualcuno sa cosa sto facendo male qui? Tutti i suggerimenti sono ben accetti!
ha a usare [pysimplesoap] (https://pypi.python.org/pypi/pysimplesoap) - Non può nemmeno essere installato come è sorta di rotto:/ –
@JamesMills - doesn Devo essere pysimplesoap di per sé. Ho solo bisogno di farlo funzionare. L'ho provato anche usando la schiuma. Ma non riesco a farlo funzionare: http://stackoverflow.com/questions/30874988/how-to-create-soap-header-with-python-suds-library La libreria che uso non ha importanza, è solo bisogno di essere in Python, questo è tutto. Sapresti come farlo in una libreria diversa? – kramer65