PythonにはどのSOAPクライアントライブラリが存在し、それらのドキュメントはどこにありますか? [閉まっている]
-
03-07-2019 - |
解決
更新(2016):
SOAPクライアントのみが必要な場合、 zeep という適切に管理されたライブラリがあります。 Python 2と3の両方をサポートしています:)
更新:
上記の説明に加えて、 Python WebServices ページを参照します SOAP および他のすべてのWebサービスタイプに対してアクティブに維持および推奨されるすべてのモジュールを使用して、常に最新の状態にします。
残念ながら、現時点では、「最高」はないと思います。 Python SOAPライブラリ。利用可能な主流のものにはそれぞれ長所と短所があります。
古いライブラリ:
-
SOAPy :「最高」でした。しかし、もはや維持されていません。 Python 2.5以降では機能しません
-
ZSI :使用するのは非常に苦痛であり、開発は遅いです。 SOAPy(上記)とは異なる" SOAPpy"というモジュールがあります。
"新しい"ライブラリ:
-
SUDS :非常にPythonicで、WSDLを消費するSOAPクライアントを簡単に作成できます。 SOAPサーバーの作成はもう少し難しくなります。 (このパッケージはPython3では動作しません。Python3についてはSUDS-py3を参照してください)
-
SUDS-py3 :SUDSのPython3バージョン
-
spyne :サーバーの作成は簡単で、クライアントの作成はもう少し難しくなります。ドキュメントが少し不足しています。
-
ladon :サーバーの作成は、soaplibに似ています(デコレーターを使用)。 Ladonは、追加のユーザーコードを必要とせずに、SOAPよりも多くのインターフェイスを同時に公開します。
-
pysimplesoap :非常に軽量ですが、クライアントとサーバーの両方に役立ちます- web2pyに同梱されているweb2pyサーバー統合。
- SOAPpy :上記のZSIリンクでホストされている放棄されたSOAPpyとは異なり、このバージョンは実際に維持されています2011年までは、現在も放棄されているようです。
- soaplib :簡単に使用できるPythonライブラリで、SOAP Webサービスの作成と呼び出しを行います。 soaplibで記述されたWebサービスはシンプルで軽量であり、他のSOAP実装とうまく機能し、WSGIアプリケーションとしてデプロイできます。
- osa :高速でスリムな使いやすいSOAP Pythonクライアントライブラリ。
上記のうち、私は個人的にSUDSを使用しただけで、とても気に入っています。
他のヒント
この質問に対する他の回答のアドバイスに従い、 SUDS を試してみました。 「怒りで」使用した後私は同意しなければなりません:SUDSはとてもいいです!強くお勧めします!
プロキシの背後からHTTPSベースのWebサービスを呼び出すときに問題が発生しました。この記事の執筆時点では、これは urllib2
を使用するすべての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バグトラッカーの issue1424152 でした。 Python 2.xおよびPython 3.xでこれを修正するバグレポートにパッチが添付されています。 問題は既に修正されています。
私はSUDSで良い経験をしました https://fedorahosted.org/suds
ドキュメントとしてTestSuiteを使用しました。
SUDSが道のりです。それについては疑問の余地はありません。
SUDSを見ている人へのFYI警告ですが、このチケットが解決されるまで、SUDSは「選択」をサポートしません。 WSDLのタグ:
https://fedorahosted.org/suds/ticket/342
参照: sudsおよびchoiceタグ
SUDSは簡単に使用できますが、再入可能とは限りません。パフォーマンスを向上させるために、スレッド化されたアプリ内でWSDL Client()オブジェクトを保持している場合、リスクが伴います。このリスクの解決策であるclone()メソッドは、回復不能なPython 5508バグをスローします。混乱する可能性がありますが、動作します。依然として最高のPython SOAPクライアントです。
新しいライブラリ: PySimpleSOAP をリリースしました。これは、シンプルで機能的なクライアントをサポートします/サーバ。目標は、使いやすさと柔軟性(クラス、自動生成コードまたはxmlは不要)、WSDLの内省と生成、WS-I標準への準拠、互換性(Java AXIS、.NET、Jboss WSを含む)です。フルスタックソリューション(XML_RPC、JSON、AMF-RPCなどの他のサポートされているプロトコルを補完する)を有効にするためにWeb2Pyに含まれています。
誰かがSOAPを学んでいるか、それを調査したいなら、始めるのが良い選択だと思います。
soaplibは、SOAPクライアント(「送信者」)を非推奨にして、sudを支持していると思います。この時点で、soaplibはWebフレームワークに依存しないSOAPサーバー(「レシーバー」)に焦点を当てています。現在、soaplibは活発に開発中であり、通常はPython SOAPメーリングリストで議論されています。
こちら独自のロールをお勧めします。実際、それほど難しくはないので、Python SOAPライブラリが世の中にないのはそのためだと思います。
sudsはかなり良いです。私はSOAPpyを試しましたが、泡がほとんどすぐに機能したのに対して、私は必要な方法で動作しませんでした。
my の結論には次のとおりです。
SOAPクライアント側:
のみを使用 Suds-jurko ( 2016年更新)
泡はよく維持され、更新されます。
更新06/2017: suds-jurkoライブラリは更新されず、明らかに放棄された、
zeep ライブラリをテストしましたが、トークンに関する制限があり、現在はUsernameTokenをサポートしています。 バグを報告してタイムスタンプトークンを作成し、コードを更新して修正します。
良いスタートを維持し、良いドキュメントがあるので、最近コードを泡からzeepに移行し、正常に動作します。
SOAPサーバー側:
TGWS、soaplib(pysimplesoapは未テスト)、IMHOの使用、ヘルプsoaplibを選択する必要があります。
よろしく、
このヘルプができましたか: http://users.skynet .be / pascalbotte / rcx-ws-doc / python.htm#SOAPPY
私は、 wsdl
と python
を検索することにより、合理的な意味で、有用なクライアントラッパーを実行するにはSOAPサーバーのwsdl記述が必要であることを発見しました。 ...
Python WebサービスのSOAPpyを使用しましたが、ZSI(同じソース)は置き換えます。
本番環境でPython 2.5.3でSOAPpyを使用しています。
SOAPpyでいくつかのファイルを手動で編集する必要がありました(ヘッダーコードが間違った場所にあることについて)。