Domanda

Sto chiamando un servizio web WSDL da Python usando SOAPpy . La chiamata che devo fare è il metodo Auth_login . Questo ha 2 argomenti: il primo, una stringa è la chiave API; il secondo, un tipo personalizzato contenente nome utente e password . Il tipo personalizzato si chiama Auth_credentialsData che contiene 2 valori come punti, uno per il nome utente e uno per la password. Come posso creare questo tipo personalizzato usando SOAPpy? Ho provato a passare un elenco e un dizionario, nessuno dei quali funziona.

Codice finora:

from SOAPpy import WSDL

wsdlUrl = 'https://ws.pingdom.com/soap/PingdomAPI.wsdl'
client = WSDL.Proxy(wsdlUrl)

Ho provato entrambi:

credentials = ['email@example.com', 'password']
client.Auth_login('key', credentials)

e

credentials = {'username': 'email@example.com', 'password': 'passsword'}
client.Auth_login('key', credentials)

entrambi danno un errore di autenticazione fallita.

È stato utile?

Soluzione

Il metodo migliore è usare il modulo soap ZSI che ti permette di prendere un file WDSL e trasformarlo in classi e metodi che puoi usare per chiamarlo. La documentazione online è sul loro sito web ma la documentazione più recente è più facilmente reperibile nella fonte pacchetto. Se installi in Debian / Ubuntu (nome del pacchetto python-zsi) la documentazione è in / usr / share / doc / python-zsi in una coppia di PDF che puoi trovare lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top