私はこれまでSOAPを使用したことがなく、Pythonは初めての方です。これは、両方のテクノロジーを理解するために行います。SOAPlibをインストールし、クライアントのドキュメントを読み込もうとしましたが、よくわかりません。PythonのSOAPクライアントライブラリになるのにより適した他に検討できることはありますか?
編集:念のため、私はPython 2.6を使用しています。
私はこれまでSOAPを使用したことがなく、Pythonは初めての方です。これは、両方のテクノロジーを理解するために行います。SOAPlibをインストールし、クライアントのドキュメントを読み込もうとしましたが、よくわかりません。PythonのSOAPクライアントライブラリになるのにより適した他に検討できることはありますか?
編集:念のため、私はPython 2.6を使用しています。
回答:
アップデート(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サーバー統合が含まれています。
上記の中で、私はSUDSを個人的に使用しただけで、とても気に入りました。
urllib2
問題であることが判明しました。詳細については、私の回答を参照してください。
私はこの質問に対する他の回答のアドバイスに従い、SUDSを試してみました。「怒って」それを使用した後、私は同意する必要があります:SUDSは非常にいいです!強くお勧めします!
プロキシの背後からHTTPSベースのWebサービスを呼び出すときに問題が発生しました。この記事の執筆時点では、これはを使用するすべての Python Webサービスクライアントに影響するためurllib2
、ここで解決策を文書化します。
urllib2
以下のpython 2.6.2ととモジュールの出荷は発行しませんCONNECT
HTTPS-over-HTTPのプロキシセッション用のプロキシに。その結果、タイムアウトが長くなるか、運が良ければ、次のようなエラーが表示されます。
abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
これは、Pythonバグトラッカーのissue1424152でした。バグレポートに添付されたパッチがあり、Python 2.xおよびPython 3.xでこれを修正します。この問題はすでに修正されています。
SUDS https://fedorahosted.org/sudsで良い経験をしました
ドキュメントとしてTestSuiteを使用しました。
pip install suds-jurko
SUDSを見る人に対するFYI警告だけです。このチケットが解決されるまで、SUDSはWSDLの「choice」タグをサポートしません。
https://fedorahosted.org/suds/ticket/342
参照: 泡と選択タグ
SUDSは使いやすいですが、再入可能であるとは限りません。パフォーマンスを向上させるために、スレッド化されたアプリ内でWSDL Client()オブジェクトを保持している場合は、いくつかのリスクが伴います。このリスクの解決策であるclone()メソッドは、回復不能なPython 5508バグをスローします。これは、印刷されているように見えても実際には例外をスローしません。紛らわしいかもしれませんが、動作します。それは今でも断然最高のPython SOAPクライアントです。
シンプルで機能的なクライアント/サーバーのサポートを提供する新しいライブラリPySimpleSOAPをリリースしました。目標は、使いやすさと柔軟性(クラスなし、自動生成コードまたはxmlは不要)、WSDLイントロスペクションと生成、WS-I標準への準拠、互換性(Java AXIS、.NET、Jboss WSを含む)です。フルスタックソリューションを有効にするためにWeb2Pyに含まれています(XML_RPC、JSON、AMF-RPCなどの他のサポートされているプロトコルを補完します)。
誰かがSOAPを学んでいる、またはSOAPを調査したい場合は、始めるのが良い選択だと思います。
soaplibがSOAPクライアント(「送信者」)を非推奨にしてsudsを支持したと思います。この時点で、soaplibは、Webフレームワークに依存しないSOAPサーバー(「レシーバー」)であることに焦点を当てています。現在、soaplibは活発に開発されており、通常はPython SOAPメーリングリストで議論されています。
で、私の結論我々はこれを持っています:
SOAPクライアント側:
Suds-jurko (2016年更新)のみを 使用してください。sud
は十分に維持および更新されています。
更新2017年6月:suds -jurkoライブラリは更新されておらず、放棄されているようです。
私はzeepライブラリをテストしましたが、トークンに関する制限がありました。今ではUsernameTokenをサポートするだけで、バグを報告してタイムスタンプトークンを作成し、それを修正するためにコードを更新します。
Zeepは適切に起動し、ドキュメントも充実しています。そのため、最近コードをsudsからzeepに移行して問題なく動作しました。
SOAPサーバー側:
私たちはTGWS、soaplib(pysimplesoapはテストされていません)を使用しており、soaplibを選択する必要があります。
宜しくお願いします、
これは役に立ちますか:http : //users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
私が探してそれを見つけwsdl
とpython
....あなたが任意の有用なクライアントのラッパーを行うにはSOAPサーバーのWSDL記述を必要とすることを、合理的なされている状態で、
私たちはPython Web Servicesの SOAPpyを使用していましたが、ZSI(同じソース)がSOAPpyを置き換えているようです。