web-dev-qa-db-ja.com

Python用にSOAPクライアントライブラリが存在し、それらのドキュメントはどこにありますか?

私はこれまで一度も SOAP を使ったことがないし、私はPythonの初心者です。私は自分自身が両方の技術に精通するためにこれをやっています。 SOAPlib をインストールして、 Client のドキュメントを読み込もうとしましたが、よくわかりません。 Python用のSOAP Clientライブラリになるのにもっと適しているものは他にありますか?

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

318
damon

更新(2016):

SOAP clientだけが必要な場合は、 zeep というよくメンテナンスされたライブラリがあります。 Python 2と3の両方をサポートします。


更新:

上で述べたことに加えて、私はすべての積極的に維持され推奨されているモジュールで常に最新の Python WebServices ページを参照しますSOAPそして他のすべてのものWebサービスの種類。


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

古いライブラリ

  • SOAPy :「最高」でしたが、もう保守されていません。 Python 2.5以降では動作しません

  • ZSI :使用するのは非常に面倒で、開発は遅いです。 「SOAPpy」と呼ばれるモジュールを持っています。これは(上記の)SOAPyとは異なります。

「新しい」ライブラリ:

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

  • SUDS-py :SUDSのPython 3バージョン

  • spyne :サーバーを作るのは簡単です、クライアントを作るのはもう少し難しいです。ドキュメンテーションは多少欠けています。

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

  • pysimplesoap :非常に軽量だがクライアントとサーバーの両方に役立ちます - web2pyに同梱されているweb2pyサーバー統合を含みます。

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

上記のうち、私は個人的にSUDSを使用しただけで、私はそれが大好きでした。

379
Samat Jain

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

プロキシの内側からHTTPSベースのWebサービスを呼び出すのに問題がありました。これを書いている時点では、これは影響を受けますallurllib2を使用するPython Webサービスクライアント、それで私はここで解決策を文書化します。

Python 2.6.2以下で出荷されているurllib2モジュールは、HTTPS-over-HTTP-proxyセッションのためにCONNECTをプロキシに発行しません。これによりタイムアウトが長くなります。運が良ければ、次のようなエラーになります。

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

これはPythonのバグ追跡システムでは issue 1424152 でした。 Python 2.xとPython 3.xではこれを修正するパッチがバグレポートに添付されています。 問題はすでに修正されています

47
sstock

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

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

19
Rajesh

SUDSは、それを疑う余地のない方法です。

10
Mike

このチケットが解決されるまで、SUDSを見ている人々にはFYIの警告ですが、SUDSはWSDLの "choice"タグをサポートしていません。

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

参照してください: 泡と選択タグ

8
Doug

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

6
user281429

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

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

4
reingart

私は、soaplibがsu []を支持してSOAPクライアント( 'sender')を非推奨にしたと考えています。現時点では、soaplibはWebフレームワークにとらわれないSOAPサーバー( 'receiver')であることに焦点を当てています。現在soaplibは活発に開発中で、通常Python SOAPメーリングリストで議論されています:

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

2
bradallen137

私の結論では、これがあります。

石鹸クライアント側:

のみを使用Suds-jurko(2016年更新)sudsはよくメンテナンスされ更新されています。

UPDATE 06/2017:suds-jurkoライブラリは更新されず、 見かけ上放棄されました

zeep ライブラリをテストしましたが、トークンに関する制限がありました。これでUsernameTokenをサポートするようになりました。タイムスタンプトークンを作成する バグ を報告し、修正しました。

Zeepは上手く始めて、そして ドキュメント を持っているので、私は最近sudsからzeepに私のコードを移行して、そしてうまく働きます。

SOAPサーバー側

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

宜しくお願いします、

1

私が提案したように ここ 私はあなたがあなた自身を転がすことを勧めます。それは実際にはそれほど難しいことではありませんし、Python SOAPライブラリが他にないのはそれが理由だと思います。

1
Greg

泡はかなり良いです。私はSOAPpyを試しましたが、sudsはほとんどすぐに機能するのに対して、私が必要とする方法でそれを機能させることはできませんでした。

1
Pratik Patel

本番環境では、Python 2.5.3でSOAPpyを使用しています。

私は手動でSOAPpyでいくつかのファイルを編集しなければなりませんでした(ヘッダーコードが間違った場所にあることについての何か)。

0
carl

これは助けることができる: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY

私はwsdlpythonを検索することによって、合理的な存在で、あなたがどんな有用なクライアントラッパーをするためにもSOAPサーバのwsdl記述が必要であることを見つけました。

0
Daren Thomas

私たちは Python Web Services からSOAPpyを使いましたが、ZSI(同じソース)がそれに取って代わっているようです。

0
Kirk Strauser