Quali librerie client SOAP esistono per Python e dove si trova la documentazione per loro? [chiuso]


333

Non ho mai usato SOAP prima e sono abbastanza nuovo per Python. Lo sto facendo per farmi conoscere entrambe le tecnologie. Ho installato SOAPlib e ho provato a leggere la loro documentazione client , ma non la capisco bene. C'è qualcos'altro che posso cercare che è più adatto per essere una libreria client SOAP per Python?

Modifica: nel caso in cui aiuti, sto usando Python 2.6.


1
Lo fa deve essere SOAP, come l'utilizzo di servizi web preesistenti? Il xmlrpclib di Python è semplicissimo da usare e con esso ho migrato i nostri servizi SOAP in XMLRPC.
Kirk Strauser,

26
A volte si desidera semplicemente connettersi al servizio che viene fornito SOLO su SOAP, quindi sì - una buona libreria SOAP Python è qualcosa che prima o poi sarà necessario. Non si avrà alcuna possibilità di convincere il fornitore di servizi a sostituire SOAP con qualcosa di "più pulito" ...
rombarcz,

34
Qualcuno può fornire un aggiornamento rilevante nel 2011? Apparentemente nessuno potrà mai più porre questa domanda.
Marcin,

1
FYI: ho aperto un post simile che gli obiettivi SOAP per Python 3 : stackoverflow.com/questions/7817303/...
gecco

5
Chiunque visiti questa domanda, vota per riaprirla in modo che le informazioni possano rimanere aggiornate / che possano essere pubblicate nuove risposte.
ocodo,

Risposte:


388

Aggiornamento (2016):

Se hai solo bisogno del client SOAP, esiste una libreria ben gestita chiamata zeep . Supporta sia Python 2 che 3 :)


Aggiornare:

Oltre a quanto menzionato sopra, farò riferimento alla pagina dei WebServices di Python che è sempre aggiornata con tutti i moduli di SOAP e tutti gli altri tipi di servizi Web attivamente gestiti e consigliati .


Sfortunatamente, al momento, non credo che esista una "migliore" libreria Python SOAP. Ognuno dei principali disponibili ha i suoi pro e contro.

Biblioteche precedenti:

  • SAPONE : era il "migliore", ma non più mantenuto. Non funziona su Python 2.5+

  • ZSI : molto doloroso da usare e lo sviluppo è lento. Ha un modulo chiamato "SOAPpy", che è diverso da SOAPy (sopra).

Librerie "più recenti":

  • SUDS : Molto Pythonic e facile da creare client SOAP che consumano WSDL. La creazione di server SOAP è un po 'più difficile. (Questo pacchetto non funziona con Python3. Per Python3 vedi SUDS-py3)

  • SUDS-py3 : la versione Python3 di SUDS

  • spyne : Creare server è facile, creare client un po 'più impegnativi. La documentazione è in qualche modo carente.

  • ladon : la creazione di server è molto simile a soaplib (usando un decoratore). Ladon espone più interfacce di SOAP contemporaneamente senza che sia necessario un codice utente aggiuntivo.

  • pysimplesoap : molto leggero ma utile sia per client che per server - include un'integrazione server web2py fornita con web2py.

  • SOAPpy : distinta dalla SOAPpy abbandonata ospitata sul collegamento ZSI sopra, questa versione è stata effettivamente mantenuta fino al 2011, ora sembra anche essere abbandonata.
  • soaplib : libreria Python facile da usare per scrivere e chiamare servizi web soap. I servizi Web scritti con soaplib sono semplici, leggeri, funzionano bene con altre implementazioni SOAP e possono essere implementati come applicazioni WSGI.
  • osa : una libreria client SOAP python SOAP veloce / sottile.

Di quanto sopra, ho usato solo SUDS personalmente e mi è piaciuto molto.


2
SOAPy e SOAPpy sono in realtà diversi. Ho modificato per chiarire e ho trasformato il post in un wiki della community.
Samat Jain,

17
+1 per SUDS, ottima biblioteca! Ho riscontrato problemi durante l'utilizzo di SUDS con i servizi Web HTTPS dietro un proxy. Si scopre che è un urllib2problema noto di Python . Vedi la mia risposta per maggiori dettagli.
sstock,

4
Ho provato i SUD, ma è andato in un ciclo infinito all'apertura di un WSDL; quindi Python ha generato un errore del limite di ricorsione. Ho trovato questo biglietto aperto per quanto riguarda il problema: fedorahosted.org/suds/ticket/239 Apparentemente si trattava di un errore di rottura della libreria 3 anni fa e non è stato ancora corretto.
Buttons840,

11
C'è un fork di SUDS mantenuto su bitbucket.org/jurko/suds
Sjaak Trekhaak

1
Ho iniziato a utilizzare SUDS oggi solo per il recupero dei dati. Gestiva un'autentica apikey di base nelle intestazioni di sapone senza problemi e le risposte erano abbastanza facili da analizzare. Anche la documentazione era discreta.
saccarina,

47

Ho seguito il consiglio di altre risposte a questa domanda e ho provato SUDS . Dopo averlo usato "con rabbia", sono d'accordo: SUDS è molto carino! Altamente raccomandato!

Ho avuto problemi a chiamare i servizi Web basati su HTTPS da dietro un proxy. Al momento della stesura di questo documento, ciò riguarda tutti i client di servizi Web Python che utilizzano urllib2, quindi documenterò la soluzione qui.

Il urllib2modulo fornito con Python 2.6.2 e versioni precedenti non invierà un CONNECTproxy al proxy per le sessioni HTTPS-over-HTTP-proxy. Ciò comporta un timeout lungo o, se si è fortunati, un errore simile a:

abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Questo era il problema 1424152 sul tracker dei bug di Python. Ci sono patch allegate al bug report che risolveranno questo problema in Python 2.xe Python 3.x. Il problema è già stato risolto .


L'ho appena installato e anche se sono totalmente nuovo in Python, mi è sembrato molto intuitivo e ho potuto inviare richieste SUDS in pochi minuti. La biblioteca è fantastica!
Leonid,

1
Ti dispiace aggiornare questo. Lo chiedo perché ho fatto clic sul collegamento e il bug è stato corretto.
Tshepang,

3
Peccato che non sembra più essere mantenuto
paulm

Fore us suds funziona anche bene .. Tuttavia è molto lento. Il recupero di un file soap XML richiede 0,5 secondi e l'elaborazione richiede 5 secondi su una macchina dual core!
TjerkW,


19

Ho avuto una buona esperienza con SUDS https://fedorahosted.org/suds

Utilizzato TestSuite come documentazione.


1
SUDS è fantastico! davvero facile da usare, buoni documenti, grandi cose!
Sander Versluys,

1
Fork supportato, supportato da python3: suds-jurko . pip install suds-jurko
Laffuste,

Sto cercando di chiamare il sapone asincrono api con schiuma, funzionando bene ma non ricevendo alcuna risposta, qualcuno può aiutarmi in questo, hr il mio Q .: stackoverflow.com/questions/39227719/…
Vikram Singh Chandel,

10

SUDS è la strada da percorrere, non c'è dubbio.


5
E fallisce anche su un gran numero di file WSDL. A sostegno di tale affermazione, ad esempio le API delle mappe di Bing, alcuni di questi falliscono e la schiuma non può analizzarli.

3
ho trovato SUDS supporta endpoint SSL.
leonigmig,


6

SUDS è facile da usare, ma non è garantito che rientri nuovamente. Se mantieni l'oggetto WSDL Client () in un'app filettata per migliorare le prestazioni, c'è qualche rischio. La soluzione a questo rischio, il metodo clone (), genera il bug irrecuperabile di Python 5508, che sembra stampare ma non genera un'eccezione. Può essere fonte di confusione, ma funziona. È ancora di gran lunga il miglior client SOAP Python.


4

Abbiamo rilasciato una nuova libreria: PySimpleSOAP , che fornisce supporto per client / server semplici e funzionali. Gli obiettivi sono: facilità d'uso e flessibilità (non sono richieste classi, codice generato automaticamente o xml), introspezione e generazione WSDL, conformità standard WS-I, compatibilità (inclusi Java AXIS, .NET e Jboss WS). È incluso in Web2Py per abilitare soluzioni full-stack (a complemento di altri protocolli supportati come XML_RPC, JSON, AMF-RPC, ecc.).

Se qualcuno sta imparando il SAPONE o desidera indagarlo, penso che sia una buona scelta iniziare.


2

Credo che soaplib abbia deprecato il suo client SOAP ("mittente") a favore della schiuma. A questo punto soaplib si concentra sull'essere un server SOAP agnostico ('ricevitore') del framework web. Attualmente soaplib è in fase di sviluppo attivo ed è di solito discusso nella mailing list Python SOAP:

http://mail.python.org/mailman/listinfo/soap


2

Nella mia conclusione, abbiamo questo:

Lato client del sapone:

usare solo Suds-jurko (aggiornato 2016) suds è ben mantenuto e aggiornato.

AGGIORNAMENTO 06/2017: la libreria suds-jurko non viene aggiornata e apparentemente abbandonata ,

Ho testato la libreria zeep ma ho ottenuto dei limiti sui token, ormai supportato solo UsernameToken, segnalo un bug per creare il token timestamp e l'autore aggiorna il codice per risolverlo.

Zeep inizia bene e ha una buona documentazione , quindi di recente ho migrato il mio codice da Suds a Zeep e funziona bene.

Lato server sapone:

Abbiamo TGWS, soaplib (pysimplesoap non testato) e l'uso di IMHO per aiutare soaplib deve essere la scelta.

I migliori saluti,


Esiste una buona documentazione / campioni per Suds-Jurko? nel repository ci sono alcuni file .rst ma non molto in termini di documentazione su come usare la libreria.
ierdna,

1

Come ho suggerito qui, ti consiglio di fare il tuo. In realtà non è così difficile e sospetto che sia la ragione per cui non ci sono librerie SOAP Python migliori là fuori.


1

la schiuma è abbastanza buona. Ho provato SOAPpy ma non l'ho fatto funzionare nel modo in cui avevo bisogno, mentre la schiuma ha funzionato praticamente subito.




0

Sto usando SOAPpy con Python 2.5.3 in un'impostazione di produzione.

Ho dovuto modificare manualmente un paio di file in SOAPpy (qualcosa in cui il codice dell'intestazione era nel posto sbagliato) ma a parte questo ha funzionato e continua a farlo in modo molto affidabile.


1
Abbiamo fatto lo stesso e stiamo usando SOAPpy con Python 2.6.3.
Joe L.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.