Nigdy wcześniej nie korzystałem z SOAP i jestem nowy w Pythonie. Robię to, aby zapoznać się z obiema technologiami. Zainstalowałem SOAPlib i próbowałem przeczytać dokumentację klienta , ale nie rozumiem tego zbyt dobrze. Czy jest coś jeszcze, co można by bardziej wykorzystać jako bibliotekę klienta SOAP dla Pythona?
Edycja: Na wszelki wypadek używam Pythona 2.6.
python
soap
soap-client
Damon
źródło
źródło
Odpowiedzi:
Aktualizacja (2016):
Jeśli potrzebujesz tylko klienta SOAP, istnieje dobrze utrzymana biblioteka o nazwie zeep . Obsługuje zarówno Python 2, jak i 3 :)
Aktualizacja:
Oprócz tego, co wspomniano powyżej, odniosę się do strony Python WebServices, która jest zawsze aktualna ze wszystkimi aktywnie utrzymywanymi i polecanymi modułami SOAP i wszystkimi innymi typami usług sieciowych.
Niestety w tej chwili nie sądzę, że istnieje „najlepsza” biblioteka SOAP Python. Każdy z dostępnych mainstreamów ma swoje zalety i wady.
Starsze biblioteki:
Mydlany : Był „najlepszy”, ale już nie utrzymany. Nie działa w Python 2.5+
ZSI : Bardzo bolesny w użyciu, a rozwój jest powolny. Ma moduł o nazwie „SOAPpy”, który różni się od SOAPy (powyżej).
„Nowsze” biblioteki:
MYDLINY : bardzo Pythoniczny i łatwy w tworzeniu klient SOAP zużywający WSDL. Tworzenie serwerów SOAP jest nieco trudniejsze. (Ten pakiet nie działa z Python3. Dla Python3 zobacz SUDS-py3)
SUDS-py3 : SUDS w wersji Python3
spyne : Tworzenie serwerów jest łatwe, tworzenie klientów jest nieco trudniejsze. Dokumentacja jest nieco brakuje.
ladon : Tworzenie serwerów jest bardzo podobne do w soaplib (przy użyciu dekoratora). Ladon udostępnia więcej interfejsów niż SOAP w tym samym czasie bez dodatkowego kodu użytkownika.
pysimplesoap : bardzo lekki, ale przydatny zarówno dla klienta, jak i serwera - obejmuje integrację serwera web2py dostarczaną z web2py.
Z powyższego korzystałem tylko z SUDS osobiście i bardzo mi się podobało.
źródło
urllib2
problem Pythona . Zobacz moją odpowiedź, aby uzyskać więcej informacji.Postępowałem zgodnie z radą zawartą w innych odpowiedziach na to pytanie i wypróbowałem SUDS . Po użyciu go „w gniewie” muszę się zgodzić: SUDS jest bardzo miły! Wysoce polecany!
Miałem problemy z dzwonieniem do usług internetowych opartych na HTTPS zza serwera proxy. W chwili pisania tego tekstu ma to wpływ na wszystkich klientów usług internetowych Python
urllib2
, więc udokumentuję rozwiązanie tutaj.urllib2
Wysyłka moduł z Pythona 2.6.2 i poniżej nie wydaCONNECT
pełnomocnikowi do sesji HTTPS-over-HTTP-proxy. Powoduje to długi limit czasu lub, jeśli masz szczęście, błąd, który wygląda następująco:To był problem1424152 w narzędziu do śledzenia błędów w Pythonie. Do raportu o błędzie dołączono łatki, które naprawią to w Python 2.xi Python 3.x. Problem został już rozwiązany .
źródło
Miałem dobre doświadczenia z SUDS https://fedorahosted.org/suds
Użyli ich TestSuite jako dokumentacji.
źródło
pip install suds-jurko
SUDS to droga, bez żadnych wątpliwości.
źródło
Tylko ostrzeżenie FYI dla osób patrzących na SUDS, dopóki ten bilet nie zostanie rozwiązany, SUDS nie obsługuje znacznika „choice” w WSDL:
https://fedorahosted.org/suds/ticket/342
patrz: pienienie i tag wyboru
źródło
SUDS jest łatwy w użyciu, ale nie ma gwarancji, że zostanie ponownie przyjęty. Jeśli trzymasz obiekt WSDL Client () w aplikacji z wątkami dla lepszej wydajności, wiąże się to z pewnym ryzykiem. Rozwiązanie tego ryzyka, metoda clone (), zgłasza nieodwracalny błąd Python 5508, który wydaje się drukować, ale tak naprawdę nie zgłasza wyjątku. Może być mylące, ale działa. Jest to wciąż najlepszy klient SOAP w Pythonie.
źródło
Wydaliśmy nową bibliotekę: PySimpleSOAP , która zapewnia obsługę prostego i funkcjonalnego klienta / serwera. Jego cele to: łatwość użycia i elastyczność (nie są wymagane żadne klasy, automatycznie generowany kod lub xml), introspekcja i generowanie WSDL, zgodność ze standardem WS-I, kompatybilność (w tym Java AXIS, .NET i Jboss WS). Jest dołączony do Web2Py, aby umożliwić rozwiązania pełnego stosu (uzupełniające inne obsługiwane protokoły, takie jak XML_RPC, JSON, AMF-RPC itp.).
Jeśli ktoś uczy się mydła lub chce go zbadać, myślę, że warto zacząć.
źródło
Wierzę, że soaplib wycofał swojego klienta SOAP („nadawcę”) na korzyść mydlin. W tym momencie soaplib koncentruje się na byciu agnostycznym serwerem SOAP („odbiornikiem”). Obecnie soaplib jest w fazie rozwoju i jest zwykle omawiany na liście mailingowej Python SOAP:
http://mail.python.org/mailman/listinfo/soap
źródło
W moim podsumowaniu mamy to:
Po stronie klienta mydła:
używaj tylko Suds-jurko (aktualizacja 2016) piana jest dobrze utrzymana i zaktualizowana.AKTUALIZACJA 06/2017: biblioteka suds-jurko nie została zaktualizowana i najwyraźniej została porzucona ,
Testowałem bibliotekę Zeep, ale dostałem ograniczenia dotyczące tokenów, teraz obsługuję Token_użytkownika, zgłaszam błąd w tworzeniu tokena znacznika czasu i autor aktualizuje kod, aby to naprawić.
Zeep zaczyna się dobrze i ma dobrą dokumentację , więc niedawno przeprowadziłem migrację mojego kodu z suds do zeep i działa dobrze.
Strona serwera mydła:Mamy TGWS, soaplib (pysimplesoap nie testowane). Używanie IMHO i pomoc w wyborze soaplib.Z poważaniem,
źródło
Jak zasugerowałem tutaj , polecam rzucić własny. Nie jest to wcale takie trudne i podejrzewam, że właśnie dlatego nie ma lepszych bibliotek SOAP w Pythonie.
źródło
mydliny są całkiem dobre. Próbowałem SOAPpy, ale nie działałem tak, jak potrzebowałem, podczas gdy mydła działały prawie od razu.
źródło
Czy może to pomóc: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
Znalazłem to, szukając
wsdl
ipython
, z racjonalnym uzasadnieniem, że potrzebujesz opisu WSDL serwera SOAP, aby wykonać użyteczne opakowanie klienta ...źródło
Użyliśmy SOAPpy z Python Web Services , ale wygląda na to, że ZSI (to samo źródło) go zastępuje.
źródło
Używam SOAPpy z Pythonem 2.5.3 w ustawieniach produkcyjnych.
Musiałem ręcznie edytować kilka plików w SOAPpy (coś o tym, że kod nagłówka znajduje się w niewłaściwym miejscu), ale poza tym działało i nadal robi to bardzo niezawodnie.
źródło