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

StackOverflow https://stackoverflow.com/questions/206154

  •  03-07-2019
  •  | 
  •  

Domanda

Non ho mai usato SOAP e sono un po 'nuovo di Python. Lo sto facendo per farmi conoscere entrambe le tecnologie. Ho installato SOAPlib e ho provato a leggere il loro Client , ma non lo capisco bene. C'è qualcos'altro che posso esaminare che è più adatto per essere una libreria client SOAP per Python?

Modifica: nel caso fosse utile, sto usando Python 2.6.

È stato utile?

Soluzione

Aggiornamento (2016):

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


Aggiornamento:

In aggiunta a quanto menzionato sopra, farò riferimento alla Python WebServices che è sempre aggiornato con tutti i moduli attivamente gestiti e consigliati su SAPONE e tutti gli altri tipi di servizi web.


Sfortunatamente, al momento, non penso che ci sia un "migliore" Libreria Python SOAP. Ognuno dei principali disponibili ha i suoi pro e contro.

Librerie precedenti:

  • SOAPy : è stato il " best, " 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).

" " più recente; biblioteche:

  • 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 : creare 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 del server web2py fornita con web2py.

  • SOAPpy : distinta dal SOAPpy abbandonato ospitato sul link ZSI sopra, questa versione è stata effettivamente mantenuta fino al 2011, ora sembra essere anche abbandonato.
  • 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 distribuiti come applicazioni WSGI.
  • osa : una libreria client SOAP python SOAP veloce / sottile.

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

Altri suggerimenti

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

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

Il modulo urllib2 fornito con Python 2.6.2 e precedenti non invierà un CONNECT al proxy per le sessioni HTTPS-over-HTTP-proxy. Ciò comporta un timeout lungo o, se sei fortunato, un errore simile a:

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

Questo era issue1424152 sul tracker 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 .

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

Hanno usato TestSuite come documentazione.

SUDS è la strada da percorrere, nessuna domanda al riguardo.

Solo un avviso FYI per le persone che guardano SUDS, fino a quando questo ticket non viene risolto, SUDS non supporta la "scelta". tag in WSDL:

https://fedorahosted.org/suds/ticket/342

vedi: suds and choice tag

SUDS è facile da usare, ma non è garantito che rientri nuovamente. Se tieni 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 Python 5508 irrecuperabile, che sembra stampare ma non genera un'eccezione. Può essere fonte di confusione, ma funziona. È ancora di gran lunga il miglior client SOAP Python.

Abbiamo rilasciato una nuova libreria: PySimpleSOAP , che fornisce supporto per client semplici e funzionali /server. 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 le 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.

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 e di solito è discusso nella mailing list Python SOAP:

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

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.

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

Nella mia conclusione abbiamo questo:

Lato client del sapone:

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

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

Ho testato la libreria zeep ma ho ottenuto dei limiti sui token, ormai supporta solo UsernameToken, i segnala un bug per creare un token timestamp e autore aggiornare il codice per risolverlo.

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

Lato server sapone:

Abbiamo TGWS, soaplib (pysimplesoap non testato) l'uso IMHO e l'aiuto soaplib devono essere la scelta.

Cordiali saluti,

Potrebbe essere di aiuto: http: //users.skynet .be / pascalbotte / RCX-ws-doc / python.htm # SOAPpy

L'ho trovato cercando wsdl e python , con l'essere razionale, che avresti bisogno di una descrizione wsdl di un server SOAP per fare utili wrapper client. ...

Avevamo usato SOAPpy da Python Web Services , ma sembra che ZSI (stessa fonte) sia sostituendolo.

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.

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