web-dev-qa-db-ja.com

python wsdlに基づくSOAPサーバーを作成

Java製品。通信サービスを説明するwsdlファイルがあります。同じサービスを実装するPythonに基づいて新しいサーバーを実装しています。 。

Wsdlに基づいてPythonサーバーコードを作成する方法を知っていますか。これにより、すべての複雑なタイプを記述する必要はありませんか?

また、Apiは何をお勧めしますか?

28
inversus

SOAPサポート、Python残念ながらもはや「バッテリーが含まれています」ではありません。クライアント側のサポートは受け入れられますが、サーバー側では基本的に自分で。

手始めに次のものを見るとよいでしょう。

http://wiki.python.org/moin/WebServices

http://pywebsvcs.sourceforge.net/

http://doughellmann.com/2009/09/01/evaluating-tools-for-developing-with-soap-in-python.html

本当にこのルートに行きたいのなら、 [〜#〜] zsi [〜#〜] が使用するツールであるように思えますが、最新の2で動作するかどうかは疑問です.x Pythonディストリビューション。

Python 2.6.6)を使用して、ZSI 2.0を使用してWSDLから開始するWebサービスを構築しようとしました。wsdl2pyを使用してコードを生成するときに「モジュールは廃止されました」という警告が出ましたおよびwsdl2dispatch、個別にインストールする必要がありました PyXML とハック sys.path 最初に解決するか、そうでなければ私は「モジュールext.readerは必要な要素を含む基本的な「Hello world!」WSで期待はずれの「ZSI:EvaluateException Got None for nillable(False)、minOccurs(1)element」エラーが発生するだけです。

PyXMLとwsdl2pyがすべて不要になったZSI 2.1_a1に切り替えました(2.0でwsdl2dispatchが行ったこと)が、「ZSI:EvaluateException Got None for nillable(False)」 、minOccurs(1)要素」エラー。

経験はあまり面白くありませんでしたが、PythonがSOAP Webサービス...大したことはありません(それは WS- * specs のような基本的なWebサービスのためだけでした)YMMV!

EDIT:最近私は this SO question にぶつかりました。解決策として、SOAPサービスを構築するためのいくつかのライブラリも記載されています。

16
Bogdan

この質問は十分な注目を集めていません。

現在受け入れられている答えは良いですが、その答えは「いいえ」です。合理的に維持された一般的なソリューションは本当にありませんか?

残念ながら、否定的な答えは質問への注意の欠如によるものではないと思います。 PythonにはWSDLのサポートは本当にありません。独自の石鹸封筒をゼロから作成する複雑さを避けたい場合は、多くの石鹸Webサービスツール(soapuiなど)のいずれかを使用してサンプルエンベロープを作成し、それをテンプレート文字列として使用することをお勧めします(Iあなたのpythonコードで、恐ろしい)

[〜#〜] update [〜#〜]spyne を使用できます。それはpython他のプロトコルの中でSOAPをサポートするRPCツールキットです。WSDLを作成しますが、目的が既にあるWSDLで記述されたサービスを実装する場合は、生成されたWSDLが元のサービスと一致するまで、spyneサービス(pythonで記述)を微調整します。

17
Francisco Meza