PythonにはどのSOAPクライアントライブラリがあり、それらのドキュメントはどこにありますか?[閉まっている]


333

私はこれまでSOAPを使用したことがなく、Pythonは初めての方です。これは、両方のテクノロジーを理解するために行います。SOAPlibをインストールし、クライアントのドキュメントを読み込もうとしましたが、よくわかりません。PythonのSOAPクライアントライブラリになるのにより適した他に検討できることはありますか?

編集:念のため、私はPython 2.6を使用しています。


1
既存のWebサービスを使用するなど、SOAP である必要がありますか?Pythonのxmlrpclibは非常に使いやすく、SOAPサービスをXMLRPCに移行しました。
カークストラウザー2008年

26
SOAPでのみ提供されるサービスに接続したい場合もあるので、そうです。良いPython SOAP libは、遅かれ早かれ必要になるものです。SOAPを「よりクリーンな」ものに置き換えるようにサービスプロバイダーを説得する機会はありません...
rombarcz

34
誰かが2011年に関連するアップデートを提供できますか?どうやら誰も二度とこの質問をすることはできません。
Marcin、2011年

1
FYI:私は、同様のポストを開けそのため、ターゲットのSOAP のPython 3stackoverflow.com/questions/7817303/...
gecco

5
この質問にアクセスする人は誰でも、投票して再開し、情報を最新の状態に保ち、新しい回答を投稿できるようにします。
ocodo 2013

回答:


388

アップデート(2016):

SOAPクライアントだけが必要な場合は、zeepと呼ばれるよく管理されたライブラリがあります。Python 2と3の両方をサポートしています:)


更新:

上記に加えて、SOAPおよびその他のすべてのWebサービスタイプに対してアクティブに維持および推奨されるすべてのモジュールが常に最新の状態にあるPython WebServicesページを参照します


残念ながら、現時点では、「最高の」Python SOAPライブラリはないと思います。利用可能な主流のものはそれぞれ独自の長所と短所があります。

古いライブラリ:

  • SOAPy:「最高」でしたが、維持されなくなりました。Python 2.5以降では機能しません

  • ZSI:使用するには非常に苦痛であり、開発は遅いです。SOAPy(上記)とは異なる「SOAPpy」というモジュールがあります。

「新しい」ライブラリ:

  • SUDS:非常にPython的で、WSDLを消費するSOAPクライアントを簡単に作成できます。SOAPサーバーの作成は少し難しいです。(このパッケージはPython3では機能しません。Python3についてはSUDS-py3を参照してください)

  • SUDS-py3:SUDSのPython3バージョン

  • spyne:サーバーの作成は簡単で、クライアントの作成は少し難しいです。ドキュメントはやや不足しています。

  • ladon:サーバーの作成はsoaplib(デコレーターを使用)によく似ています。Ladonは、追加のユーザーコードを必要とせずに、SOAPよりも多くのインターフェイスを同時に公開します。

  • pysimplesoap:非常に軽量ですが、クライアントとサーバーの両方に役立ちます-web2pyに付属するweb2pyサーバー統合が含まれています。

  • SOAPpy:上記のZSIリンクでホストされている放棄されたSOAPpyとは異なり、このバージョンは実際には2011年まで維持されていましたが、現在は放棄されているようです。
  • soaplib:soap Webサービスの作成と呼び出しのための使いやすいPythonライブラリ。soaplibで作成されたWebサービスは、シンプルで軽量で、他のSOAP実装とうまく連携し、WSGIアプリケーションとしてデプロイできます。
  • osa:高速/スリムで使いやすいSOAP pythonクライアントライブラリ。

上記の中で、私はSUDSを個人的に使用しただけで、とても気に入りました。


2
SOAPyとSOAPpyは実際には異なります。私は明確にするために編集し、投稿をコミュニティーwikiに変えました。
Samat Jain

17
SUDSの+1、素晴らしいライブラリ!プロキシの背後にあるHTTPS WebサービスでSUDSを使用すると問題が発生しました。これはPythonの既知のurllib2問題であることが判明しました。詳細については、私の回答を参照してください。
sstock 2009

4
SUDを試しましたが、WSDLを開くときに無限ループに入りました。次に、Pythonが再帰制限エラーをスローしました。私はこの問題に関してこのオープンチケットを見つけました:fedorahosted.org/suds/ticket/239 どうやらこれは3年前のライブラリ破壊バグであり、まだ修正されていません。
Buttons840

11
SUDSの保守されたフォークがbitbucket.org/jurko/sudsにあります
Sjaak Trekhaak 2013年

1
私は今日、データを取得するためだけにSUDSを使い始めました。SOAPヘッダーの基本的なapikey authを問題なく処理し、応答の解析はかなり簡単でした。ドキュメントもかなりまともでした。
サッカリン

47

私はこの質問に対する他の回答のアドバイスに従い、SUDSを試してみました。「怒って」それを使用した後、私は同意する必要があります:SUDSは非常にいいです!強くお勧めします!

プロキシの背後からHTTPSベースのWebサービスを呼び出すときに問題が発生しました。この記事の執筆時点では、これはを使用するすべての Python Webサービスクライアントに影響するためurllib2、ここで解決策を文書化します。

urllib2以下のpython 2.6.2ととモジュールの出荷は発行しませんCONNECTHTTPS-over-HTTPのプロキシセッション用のプロキシに。その結果、タイムアウトが長くなるか、運が良ければ、次のようなエラーが表示されます。

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

これは、Pythonバグトラッカーのissue1424152でした。バグレポートに添付されたパッチがあり、Python 2.xおよびPython 3.xでこれを修正します。この問題はすでに修正されています。


インストールしただけで、Pythonはまったく初めてですが、非常に直感的で、SUDSリクエストを数分で送信できました。ライブラリは素晴らしいです!
レオニード

1
これを更新してもよろしいですか。リンクをクリックしたのでお願いし、バグを修正しました。
tshepang 2011年

3
残念ながら維持されなくなっているようです
2013年

フォア私たちの泡もうまく動作します。しかし、非常に遅いです。xml soapファイルの取得には0.5秒かかり、デュアルコアマシンでは5秒かかります。
TjerkW 2014


19

SUDS https://fedorahosted.org/sudsで良い経験をしました

ドキュメントとしてTestSuiteを使用しました。


1
SUDSはすごい!本当に使いやすい、良いドキュメント、素晴らしいもの!
Sander Versluys、2011年

1
維持され、python3でサポートされているフォーク:suds-jurkopip install suds-jurko
laffuste 2015年

私は、泡と非同期石鹸APIを呼び出すしようとしているだけでなく作業が、応答は得ていない、という点で、缶誰かの助けを借り、時間私のQ .:いstackoverflow.com/questions/39227719/...
ビクラム・シンChandel

10

SUDSは進むべき道であり、疑問の余地はありません。


5
また、多数のWSDLファイルで失敗します。その主張を裏付けるために-たとえば、Bing Maps APIの場合、これらの一部は失敗し、SUDはそれらを解析できません。

3
SUDSがSSLエンドポイントをサポートしていることを発見しました。
leonigmig


6

SUDSは使いやすいですが、再入可能であるとは限りません。パフォーマンスを向上させるために、スレッド化されたアプリ内でWSDL Client()オブジェクトを保持している場合は、いくつかのリスクが伴います。このリスクの解決策であるclone()メソッドは、回復不能なPython 5508バグをスローします。これは、印刷されているように見えても実際には例外をスローしません。紛らわしいかもしれませんが、動作します。それは今でも断然最高のPython SOAPクライアントです。


4

シンプルで機能的なクライアント/サーバーのサポートを提供する新しいライブラリPySimpleSOAPをリリースしました。目標は、使いやすさと柔軟性(クラスなし、自動生成コードまたはxmlは不要)、WSDLイントロスペクションと生成、WS-I標準への準拠、互換性(Java AXIS、.NET、Jboss WSを含む)です。フルスタックソリューションを有効にするためにWeb2Pyに含まれています(XML_RPC、JSON、AMF-RPCなどの他のサポートされているプロトコルを補完します)。

誰かがSOAPを学んでいる、またはSOAPを調査したい場合は、始めるのが良い選択だと思います。


2

soaplibがSOAPクライアント(「送信者」)を非推奨にしてsudsを支持したと思います。この時点で、soaplibは、Webフレームワークに依存しないSOAPサーバー(「レシーバー」)であることに焦点を当てています。現在、soaplibは活発に開発されており、通常はPython SOAPメーリングリストで議論されています。

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


2

、私の結論我々はこれを持っています:

SOAPクライアント側:

Suds-jurko (2016年更新)のみを 使用してください。sud は十分に維持および更新されています。

更新2017年6月:suds -jurkoライブラリは更新されておらず、放棄されているようです

私はzeepライブラリをテストしましたが、トークンに関する制限がありました。今ではUsernameTokenをサポートするだけで、バグを報告してタイムスタンプトークンを作成し、それを修正するためにコードを更新します。

Zeepは適切に起動し、ドキュメントも充実しています。そのため、最近コードをsudsからzeepに移行して問題なく動作しました。

SOAPサーバー側:

私たちはTGWS、soaplib(pysimplesoapはテストされていません)を使用しており、soaplibを選択する必要があります。

宜しくお願いします、


Suds-jurkoの優れたドキュメント/サンプルはありますか?リポジトリには、いくつかの.rstファイルがありますが、ライブラリの使用方法を文書化したものではありません。
ierdna 2017年

1

ここで提案しように、自分でロールすることをお勧めします。それは実際にはそれほど難しくありません。それが、Python SOAPライブラリが他にない理由です。


1

泡はかなり良いです。SOAPpyを試してみましたが、必要な方法で動作しませんでしたが、sudsはすぐに動作しました。




0

実稼働環境でSOAPpyとPython 2.5.3を使用しています。

SOAPpyでいくつかのファイルを手動で編集する必要がありましたが(ヘッダーコードが間違った場所にあることに関するものです)、それ以外は機能し、非常に確実に機能し続けました。


1
同じことを行い、Python 2.6.3でSOAPpyを使用しています。
Joe L.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.