Quelles bibliothèques client SOAP existent pour Python, et où est la documentation pour elles? [fermé]

333

Je n'ai jamais utilisé SOAP auparavant et je suis un peu nouveau pour Python. Je fais cela pour me familiariser avec les deux technologies. J'ai installé SOAPlib et j'ai essayé de lire leur documentation client , mais je ne la comprends pas trop bien. Existe-t-il autre chose que je peux examiner qui soit plus adapté pour être une bibliothèque client SOAP pour Python?

Edit: Juste au cas où cela aiderait, j'utilise Python 2.6.

damon
la source
1
Est -ce qu'il a à être SOAP, comme l' utilisation des services Web pré-existants? Le xmlrpclib de Python est très simple à utiliser et j'ai migré nos services SOAP vers XMLRPC avec lui.
Kirk Strauser
26
Parfois, on veut juste se connecter à un service qui est UNIQUEMENT fourni via SOAP donc oui - une bonne bibliothèque SOAP python est quelque chose dont on aura tôt ou tard besoin. On n'aura aucune chance de convaincre un prestataire de services de remplacer SOAP par quelque chose de "plus propre" ...
rombarcz
34
Quelqu'un peut-il fournir une mise à jour pertinente en 2011? Apparemment, personne ne pourra plus jamais poser cette question.
Marcin
1
FYI: J'ai ouvert un post similaire qui cible SOAP pour Python 3 : stackoverflow.com/questions/7817303/…
gecco
5
Toute personne visitant cette question, votez pour la rouvrir afin que les informations puissent rester actuelles / de nouvelles réponses peuvent être publiées.
ocodo

Réponses:

388

Mise à jour (2016):

Si vous n'avez besoin que d'un client SOAP, il existe une bibliothèque bien entretenue appelée zeep . Il prend en charge Python 2 et 3 :)


Mettre à jour:

En plus de ce qui est mentionné ci-dessus, je ferai référence à la page Python WebServices qui est toujours à jour avec tous les modules activement maintenus et recommandés pour SOAP et tous les autres types de services Web.


Malheureusement, pour le moment, je ne pense pas qu'il existe une "meilleure" bibliothèque Python SOAP. Chacun des principaux courants disponibles a ses propres avantages et inconvénients.

Bibliothèques plus anciennes:

  • SOAPy : était le "meilleur", mais n'est plus maintenu. Ne fonctionne pas sur Python 2.5+

  • ZSI : très douloureux à utiliser et le développement est lent. A un module appelé "SOAPpy", qui est différent de SOAPy (ci-dessus).

Bibliothèques "plus récentes":

  • SUDS : Très Pythonic, et facile à créer des clients SOAP consommant WSDL. La création de serveurs SOAP est un peu plus difficile. (Ce paquet ne fonctionne pas avec Python3. Pour Python3, voir SUDS-py3)

  • SUDS-py3 : la version Python3 de SUDS

  • spyne : Créer des serveurs est facile, créer des clients un peu plus difficile. La documentation fait quelque peu défaut.

  • ladon : La création de serveurs ressemble beaucoup à soaplib (en utilisant un décorateur). Ladon expose plus d'interfaces que SOAP en même temps sans code utilisateur supplémentaire nécessaire.

  • pysimplesoap : très léger mais utile à la fois pour le client et le serveur - comprend une intégration de serveur web2py livrée avec web2py.

  • SOAPpy : de la SOAPpy abandonnée qui est hébergée sur le lien ZSI ci-dessus, cette version a été maintenue jusqu'en 2011, maintenant elle semble également être abandonnée.
  • soaplib : bibliothèque python facile à utiliser pour écrire et appeler des services Web soap. Les services Web écrits avec soaplib sont simples, légers, fonctionnent bien avec d'autres implémentations SOAP et peuvent être déployés en tant qu'applications WSGI.
  • osa : bibliothèque cliente SOFT python rapide / mince facile à utiliser.

De ce qui précède, je n'ai utilisé que SUDS personnellement, et je l'ai beaucoup aimé.

Samat Jain
la source
2
SOAPy et SOAPpy sont en fait différents. J'ai édité pour clarifier et transformé le post en wiki communautaire.
Samat Jain,
17
+1 pour SUDS, grande bibliothèque! J'ai rencontré des problèmes lors de l'utilisation de SUDS avec les services Web HTTPS derrière un proxy. Il s'avère que c'est un urllib2problème Python connu . Voir ma réponse pour plus de détails.
sstock
4
J'ai essayé des SUD, mais il est entré dans une boucle infinie lors de l'ouverture d'un WSDL; puis python a lancé une erreur de limite de récursivité. J'ai trouvé ce ticket ouvert concernant le problème: fedorahosted.org/suds/ticket/239 Apparemment, c'était un bug de rupture de bibliothèque il y a 3 ans, et n'a toujours pas été corrigé.
Buttons840
11
Il y a une fourchette maintenue de SUDS sur bitbucket.org/jurko/suds
Sjaak Trekhaak
1
J'ai commencé à utiliser SUDS aujourd'hui pour récupérer des données uniquement. Il a géré sans problème une authentification d'apikey de base dans les en-têtes de savon, et les réponses ont été assez faciles à analyser. La documentation était également décente.
saccharine
47

J'ai suivi les conseils d'autres réponses à cette question et j'ai essayé SUDS . Après l'avoir utilisé "en colère" je dois convenir: SUDS est très sympa! Hautement recommandé!

J'ai rencontré des problèmes pour appeler des services Web HTTPS derrière un proxy. Au moment d'écrire ces lignes, cela affecte tous les clients de service Web Python qui utilisent urllib2, donc je vais documenter la solution ici.

Le urllib2module livré avec python 2.6.2 et inférieur n'émettra pas CONNECTde proxy au proxy pour les sessions proxy HTTPS sur HTTP. Cela se traduit par un long délai d'attente, ou si vous êtes chanceux, une erreur qui ressemble à:

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

C'était le problème 1424152 sur le suivi des bogues Python. Il existe des correctifs attachés au rapport de bogue qui corrigeront cela dans Python 2.x et Python 3.x. Le problème est déjà résolu .

sstock
la source
Je viens de l'installer et même si je suis totalement nouveau sur Python, cela semblait très intuitif et je pouvais envoyer des requêtes SUDS en quelques minutes. La bibliothèque est super!
Leonid
1
Cela vous dérange de mettre à jour celui-ci. Je demande parce que j'ai cliqué sur le lien, et le bug est corrigé.
tshepang
3
Dommage qu'il ne semble plus être maintenu
paulm
Fore nous mousse fonctionne aussi bien .. Cependant, c'est très lent. La récupération d'un fichier de savon xml prend 0,5 seconde et son traitement prend 5 secondes sur une machine dual core!
TjerkW
1
@paulm: essayez bitbucket.org/jurko/suds
johndodo
19

J'ai eu une bonne expérience avec SUDS https://fedorahosted.org/suds

Utilisé leur TestSuite comme documentation.

Rajesh
la source
1
SUDS est génial! vraiment facile à utiliser, bons documents, super trucs!
Sander Versluys
1
Maintenu, fork supporté par python3: suds-jurko . pip install suds-jurko
laffuste
J'essaie d'appeler une API de savon asynchrone avec de la mousse, fonctionnant bien mais sans obtenir de réponse, quelqu'un peut-il aider à cela, hr mon Q .: stackoverflow.com/questions/39227719/…
Vikram Singh Chandel
10

SUDS est la voie à suivre, cela ne fait aucun doute.

Peter Mortensen
la source
5
Et il échoue également sur un grand nombre de fichiers WSDL. Pour sauvegarder cette affirmation - les API de cartes Bing par exemple, certaines de ces erreurs échouent et ne peuvent pas les analyser.
3
j'ai trouvé que SUDS prend en charge les points de terminaison SSL.
leonigmig
6

SUDS est facile à utiliser, mais il n'est pas garanti d'être rentrant. Si vous conservez l'objet WSDL Client () dans une application filetée pour de meilleures performances, il y a un certain risque. La solution à ce risque, la méthode clone (), lève le bogue Python 5508 irrécupérable, qui semble imprimer mais ne lève pas vraiment une exception. Peut être déroutant, mais cela fonctionne. C'est toujours de loin le meilleur client SOAP Python.


la source
4

Nous avons publié une nouvelle bibliothèque: PySimpleSOAP , qui prend en charge un client / serveur simple et fonctionnel. Ses objectifs sont: facilité d'utilisation et flexibilité (aucune classe, code généré automatiquement ou xml n'est requis), introspection et génération WSDL, conformité aux normes WS-I, compatibilité (y compris Java AXIS, .NET et Jboss WS). Il est inclus dans Web2Py pour permettre des solutions de pile complète (complétant d'autres protocoles pris en charge tels que XML_RPC, JSON, AMF-RPC, etc.).

Si quelqu'un apprend SOAP ou veut enquêter, je pense que c'est un bon choix pour commencer.

reingart
la source
2

Je crois que soaplib a déprécié son client SOAP («expéditeur») au profit de la mousse. À ce stade, soaplib se concentre sur le fait d'être un serveur SOAP agnostique de framework Web («récepteur»). Actuellement, soaplib est en cours de développement actif et est généralement discuté dans la liste de diffusion Python SOAP:

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

bradallen137
la source
2

Dans ma conclusion, nous avons ceci:

Côté savon:

utiliser uniquement Suds-jurko (mis à jour en 2016) suds est bien entretenu et mis à jour.

MISE À JOUR 06/2017: la bibliothèque suds-jurko n'est pas mise à jour et semble abandonnée ,

J'ai testé la bibliothèque zeep mais j'ai des limitations concernant les jetons, maintenant je supporte simplement UsernameToken, je signale un bug pour créer un jeton d'horodatage et l'auteur met à jour le code pour le corriger.

Zeep démarre bien et a une bonne documentation , j'ai donc récemment migré mon code de suds vers zeep et fonctionne très bien.

Côté serveur Soap:

Nous avons TGWS, soaplib (pysimplesoap non testé) à mon humble avis et l'aide soaplib doit être le choix.

Meilleures salutations,

Cristian Salamea
la source
Existe-t-il de bons documents / échantillons pour Suds-jurko? dans le référentiel, il y a quelques fichiers .rst mais pas beaucoup de documentation sur la façon d'utiliser la bibliothèque.
ierdna
1

Comme je l'ai suggéré ici, je vous recommande de rouler le vôtre. En fait, ce n'est pas si difficile et je suppose que c'est la raison pour laquelle il n'y a pas de meilleures bibliothèques SOAP Python.

Greg
la source
1

la mousse est assez bonne. J'ai essayé SOAPpy mais je ne l'ai pas fait fonctionner de la manière dont j'avais besoin, alors que la mousse fonctionnait à peu près tout de suite.

Pratik Patel
la source
0

J'utilise SOAPpy avec Python 2.5.3 dans un cadre de production.

J'ai dû éditer manuellement quelques fichiers dans SOAPpy (quelque chose à propos du code d'en-tête au mauvais endroit) mais à part cela, cela a fonctionné et continue de le faire de manière très fiable.

carl
la source
1
Nous avons fait de même et utilisons SOAPpy avec Python 2.6.3.
Joe L.