343

私はこれまでSOAPを使用したことがなく、Python は初めてです。私は両方の技術に精通するためにこれを行っています。SOAPlibをインストールし、クライアントのドキュメントを読んでみましたが、よくわかりません。Python 用の SOAP クライアント ライブラリとしてより適しているものを他に調べることはできますか?

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

4

14 に答える 14

404

更新 (2016):

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


アップデート:

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


残念ながら、現時点では「最高の」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 : SOAP Web サービスを作成および呼び出すための使いやすい Python ライブラリ。soaplib で作成された Web サービスはシンプルで軽量で、他の SOAP 実装とうまく連携し、WSGI アプリケーションとしてデプロイできます。
  • osa : 高速でスリムで使いやすい SOAP python クライアント ライブラリ。

上記のうち、個人的にはSUDSしか使ったことがなく、とても気に入りました。

于 2008-10-16T00:05:22.557 に答える
48

この質問に対する他の回答のアドバイスに従い、SUDSを試してみました。「怒って」それを使用した後、私は同意しなければなりません:SUDSはとてもいいです!強くお勧めします!

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

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

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

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

于 2009-08-06T08:33:31.950 に答える
19

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

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

于 2008-10-15T20:04:59.687 に答える
10

SUDSは進むべき道であり、それについては疑問の余地はありません。

于 2009-07-25T00:59:26.620 に答える
9

SUDS を見ている人への参考までに、このチケットが解決されるまで、SUDS は WSDL の「choice」タグをサポートしません。

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

参照: 泡と選択タグ

于 2011-06-01T03:35:13.593 に答える
6

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

于 2010-02-25T17:04:12.943 に答える
4

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

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

于 2010-08-07T01:00:14.933 に答える
2

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

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

于 2010-08-31T16:18:43.657 に答える
2

私の結論では、次のようになります。

SOAP クライアント側:

Suds-jurko (updated 2016) sudsのみ を使用 してください。

UPDATE 06/2017: suds -jurko ライブラリは更新されておらず、明らかに放棄されています。

zeepライブラリをテストしましたが、トークンに関する制限がありました。現在は UsernameToken のみをサポートしています。バグを報告してタイムスタンプ トークンを作成し、コードを更新して修正します。

Zeep の起動は良好で、ドキュメントも充実しているため、最近、コードを suds から zeep に移行し、正常に動作しました。

SOAP サーバー側:

TGWS、soaplib (pysimplesoap はテストされていません) IMHO の使用と help soaplib を選択する必要があります。

よろしくお願いします、

于 2010-08-31T20:32:20.750 に答える
1

泡はかなり良いです。SOAPpyを試しましたが、必要な方法で機能しませんでしたが、sudはすぐに機能しました。

于 2011-03-24T02:31:46.603 に答える
1

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

于 2008-10-16T01:00:24.800 に答える
0

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

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

于 2010-03-18T03:29:07.597 に答える
0

これは役に立ちますか: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY

wsdlandを検索して見つけたpythonのですが、合理的な理由から、有用なクライアント ラッパーを実行するには、SOAP サーバーの wsdl 記述が必要であることがわかりました....

于 2008-10-15T19:56:53.010 に答える
0

Python Web ServicesのSOAPpy を使用していましたが、ZSI (同じソース) がそれを置き換えているようです。

于 2008-10-15T19:59:16.797 に答える