Ich habe noch nie SOAP verwendet und bin ein bisschen neu in Python. Ich mache das, um mich mit beiden Technologien vertraut zu machen. Ich habe SOAPlib installiert und versucht, die Client- Dokumentation zu lesen , aber ich verstehe es nicht so gut. Gibt es noch etwas, das ich untersuchen kann und das besser als SOAP-Client-Bibliothek für Python geeignet ist?
Bearbeiten: Nur für den Fall, dass es hilft, verwende ich Python 2.6.
python
soap
soap-client
Damon
quelle
quelle
Antworten:
Update (2016):
Wenn Sie nur einen SOAP-Client benötigen, gibt es eine gut gepflegte Bibliothek namens zeep . Es unterstützt sowohl Python 2 als auch 3 :)
Aktualisieren:
Zusätzlich zu den oben genannten Informationen verweise ich auf die Python WebServices- Seite, die immer auf dem neuesten Stand ist und alle aktiv gewarteten und empfohlenen Module für SOAP und alle anderen Webservice-Typen enthält.
Leider glaube ich im Moment nicht, dass es eine "beste" Python-SOAP-Bibliothek gibt. Jeder der verfügbaren Mainstreams hat seine eigenen Vor- und Nachteile.
Ältere Bibliotheken:
SOAPy : War das "Beste", wurde aber nicht mehr gepflegt. Funktioniert nicht mit Python 2.5+
ZSI : Sehr schmerzhaft zu bedienen und die Entwicklung ist langsam. Hat ein Modul namens "SOAPpy", das sich von SOAPy (oben) unterscheidet.
"Neuere" Bibliotheken:
SUDS : Sehr pythonisch und einfach zu erstellende WSDL-verbrauchende SOAP-Clients. Das Erstellen von SOAP-Servern ist etwas schwieriger. (Dieses Paket funktioniert nicht mit Python3. Für Python3 siehe SUDS-py3)
SUDS-py3 : Die Python3-Version von SUDS
spyne : Das Erstellen von Servern ist einfach und das Erstellen von Clients etwas schwieriger. Die Dokumentation fehlt etwas.
ladon : Das Erstellen von Servern ähnelt dem von soaplib (mit einem Dekorateur). Ladon stellt mehr Schnittstellen als SOAP gleichzeitig zur Verfügung, ohne dass zusätzlicher Benutzercode erforderlich ist.
pysimplesoap : sehr leicht, aber nützlich für Client und Server - enthält eine web2py-Serverintegration, die mit web2py geliefert wird.
Von den oben genannten habe ich SUDS nur persönlich verwendet, und es hat mir sehr gut gefallen.
quelle
urllib2
Problem handelt. Siehe meine Antwort für weitere Details.Ich folgte dem Rat anderer Antworten auf diese Frage und versuchte es mit SUDS . Nachdem ich es "im Zorn" benutzt habe, muss ich zustimmen: SUDS ist sehr nett! Sehr empfehlenswert!
Ich hatte Probleme beim Aufrufen von HTTPS-basierten Webdiensten hinter einem Proxy. Zum Zeitpunkt dieses Schreibens betrifft dies alle verwendeten Python-Webdienst-Clients
urllib2
. Daher werde ich die Lösung hier dokumentieren.Das
urllib2
Modul, das mit Python 2.6.2 und niedriger ausgeliefert wird, gibt keinCONNECT
Proxy für HTTPS-over-HTTP-Proxy-Sitzungen an den Proxy aus. Dies führt zu einer langen Zeitüberschreitung oder, wenn Sie Glück haben, zu einem Fehler, der wie folgt aussieht:Dies war das Problem 1424152 im Python-Bug-Tracker. Dem Fehlerbericht sind Patches beigefügt, die dies in Python 2.x und Python 3.x beheben. Das Problem ist bereits behoben .
quelle
Ich hatte gute Erfahrungen mit SUDS https://fedorahosted.org/suds
Verwendete ihre TestSuite als Dokumentation.
quelle
pip install suds-jurko
SUDS ist der richtige Weg, keine Frage.
quelle
Nur eine FYI-Warnung für Personen, die sich SUDS ansehen. Bis dieses Ticket aufgelöst ist, unterstützt SUDS das "Choice" -Tag in WSDL nicht:
https://fedorahosted.org/suds/ticket/342
siehe: Schaum und Auswahlschild
quelle
SUDS ist einfach zu bedienen, es wird jedoch nicht garantiert, dass es wieder eintritt. Wenn Sie das WSDL Client () -Objekt für eine bessere Leistung in einer Thread-App behalten, besteht ein gewisses Risiko. Die Lösung für dieses Risiko, die clone () -Methode, löst den nicht behebbaren Python 5508-Fehler aus, der zu drucken scheint, aber keine Ausnahme auslöst. Kann verwirrend sein, aber es funktioniert. Es ist immer noch der mit Abstand beste Python SOAP-Client.
quelle
Wir haben eine neue Bibliothek veröffentlicht: PySimpleSOAP , die Unterstützung für einfache und funktionale Clients / Server bietet. Die Ziele sind: Benutzerfreundlichkeit und Flexibilität (keine Klassen, automatisch generierter Code oder XML erforderlich), Introspektion und Generierung von WSDL, Einhaltung des WS-I-Standards, Kompatibilität (einschließlich Java AXIS, .NET und Jboss WS). Es ist in Web2Py enthalten, um Full-Stack-Lösungen zu ermöglichen (ergänzt andere unterstützte Protokolle wie XML_RPC, JSON, AMF-RPC usw.).
Wenn jemand SOAP lernt oder es untersuchen möchte, ist es meiner Meinung nach eine gute Wahl, damit zu beginnen.
quelle
Ich glaube, soaplib hat seinen SOAP-Client ("Absender") zugunsten von Schaum abgelehnt. An diesem Punkt konzentriert sich soaplib darauf, ein webframeworkunabhängiger SOAP-Server ("Empfänger") zu sein. Derzeit befindet sich soaplib in der aktiven Entwicklung und wird normalerweise in der Python SOAP-Mailingliste behandelt:
http://mail.python.org/mailman/listinfo/soap
quelle
In meiner Schlussfolgerung haben wir Folgendes:
Seife Client-Seite:
verwenden nur Suds-jurko (letzter Stand 2016) Schaum ist sehr gepflegt und aktualisiert.UPDATE 06/2017: suds -jurko Bibliothek wird nicht aktualisiert und anscheinend aufgegeben ,
Ich habe die Zeep- Bibliothek getestet, habe aber Einschränkungen in Bezug auf Token. Inzwischen unterstütze ich nur noch UsernameToken. Ich melde einen Fehler beim Erstellen eines Zeitstempel-Tokens und aktualisiere den Code des Autors, um ihn zu beheben.
Zeep startet gut und hat eine gute Dokumentation , daher habe ich kürzlich meinen Code von Sud auf Zeep migriert und funktioniert einwandfrei.
Seifenserverseite:Wir haben TGWS, soaplib (pysimplesoap nicht getestet) IMHO verwenden und helfen soaplib muss die Wahl sein.Freundliche Grüße,
quelle
Wie ich hier vorgeschlagen habe, empfehle ich Ihnen, Ihre eigenen zu rollen. Es ist eigentlich nicht so schwierig und ich vermute, das ist der Grund, warum es keine besseren Python-SOAP-Bibliotheken gibt.
quelle
Schaum ist ziemlich gut. Ich habe SOAPpy ausprobiert, aber es hat nicht so funktioniert, wie ich es brauchte, während Schaum ziemlich sofort funktioniert hat.
quelle
Könnte dies helfen: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
Ich fand es durch die Suche nach
wsdl
undpython
mit dem rationalen Wesen, dass Sie eine wsdl-Beschreibung eines SOAP-Servers benötigen würden, um nützliche Client-Wrapper zu erstellen ....quelle
Wir hatten SOAPpy von Python Web Services verwendet , aber es scheint, dass ZSI (dieselbe Quelle) es ersetzt.
quelle
Ich benutze SOAPpy mit Python 2.5.3 in einer Produktionseinstellung.
Ich musste einige Dateien in SOAPpy manuell bearbeiten (etwas davon, dass sich der Header-Code an der falschen Stelle befindet), aber ansonsten hat es funktioniert und funktioniert weiterhin sehr zuverlässig.
quelle