36

Java 製品の通信サーバー/クライアントを記述した wsdl ファイルがあります。同じサービスを実装する Python ベースの新しいサーバーを実装しています。

wsdl に基づいて Python サーバー コードを作成する方法を知っていますか?

また、おすすめのApiを教えてください。

4

2 に答える 2

26

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

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

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

更新spyneを使用できます。これは、他のプロトコルの中でも SOAP をサポートする Python RPC ツールキットです。それはあなたのために WSDL を作成しますが、あなたの目的がすでに持っている WSDL によって記述されたサービスを実装することである場合、生成された WSDL が元の WSDL と一致するまで、(python で書かれた) spyne サービスを微調整する必要があります。

于 2013-04-11T18:04:54.490 に答える
20

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 サービスを構築しようとしました。wsdl2pyandを使用してコードを生成するときに「モジュールが非推奨になりました」という警告が表示され、 PyXMLwsdl2dispatchを個別にインストールし、最初に解決するためにハックする必要がありました。基本的な「Hello world!」で「ZSI:EvaluateException Got None for nillable(False), minOccurs(1) element」という残念なエラーが発生する 必要な要素を持つ WS。sys.path

PyXML を必要としなくなった ZSI 2.1_a1 に切り替えましたがwsdl2py( wsdl2dispatch2.0 の場合)、「ZSI:EvaluateException Got None for nillable(False), minOccurs(1) element」エラーで行き止まりになりました。

この経験はあまり楽しいものではありませんでしたが、SOAP Web サービスに対して Python が提供するものについて意見を述べるには十分でした...それはたいしたものではありません (基本的な Web サービスについては、WS-*のような派手なものは何もありませんでした)。仕様)。YMMV!

編集:私は最近、この SO の質問にぶつかりました。クライアント ソリューションに対する指向ですが、SOAP サービスを構築するためのいくつかのライブラリについても言及しています。

于 2012-12-29T12:31:05.390 に答える