web-dev-qa-db-ja.com

キャプチャされたトラフィックを使用して既存のSOAPサービスのWSDLを生成する

プリンターのSOAPサービスを使用する必要があります。このサービスにアクセスするためのWindowsツールがあり、それを使用してSOAP要求と応答を生成しました。私が必要とする重要な機能。

ここで、Pythonを使用してLinux用のクライアントを作成する必要があり、WSDLファイルでsudsライブラリを使用するのが最も簡単な方法であることがわかりました。しかし、このWSDLはありません。 !

Windowsツール(実行可能ファイルの16進ダンプを調べた)を調べたところ、WSDLファイルはおそらくまったくないという結論に達しました。

今私の質問は、「リバースエンジニアリング」SOAPサービスの経験があり、既存のサービスのWSDLファイルを作成するのに役立つツールを知っている人はいますか?(Googleingはまだ有用なものを何も提供していません) 。

14
maufl

これはプリンタのSOAPサービスです。プリンタのAPIは製造元のサイトに文書化されていますか?文書化にはWSDLが含まれていますか?製造元からWSDLを入手できますか?

製造元からWSDLを入手できれば、完了です。

そうでない場合は、WSDLを自分でビルドする必要があります。SOAPサンプル(SOAP web主に2種類のツールを利用できるサービス:WSDLからコードを生成するツールとコードからWSDLを生成するツール)。

SOAP、WSDL、およびXSDに精通している場合は、WSDLを作成するのは難しくありません。スピードを上げるには、テキストエディタまたは WSDLエディタ が必要です。

WSDLの知識に完全な自信がない場合でも、完全なWSDLに到達するためのほとんどの方法を利用できるツールがいくつかあります。これがあなたがそれをすることができる方法です:

1-最初に、SOAPペイロード用に XMLスキーマ を作成する必要があります。これは、ツールを見つけることもできます 一部オンライン 。スキーマを取得したら、要素を追加、変更、または削除して、必要に応じてスキーマを微調整します。

2-これで、XSDを使用してWSDLを生成できます。 オンラインツール それを行うものがあります。要求/応答要素タイプが要求/応答で終わる必要があるだけです。必ず説明書をお読みください。

XSDファイルを取得し、操作の名前を変更してRequest/Responseサフィックスを追加し、WSDLジェネレーター-Webツールにフィードします。 WSDLを取得します。

次に、このWSDLを必要に応じて微調整します(必要がない場合は、Request/Responseサフィックスを削除します)。

3-...必ず 有効なWSDL になります。

4-これで、WSDLを取得し、 SoapUI のようなツールを使用して、検証のためだけにサンプルの要求と応答を生成できます。適切な結果が返されること。

SoapUIメッセージは、開始したメッセージと一致していますか?はいの場合、これで完了です。WSDLをsudsにフィードして、Linuxクライアントを作成できます。そうでない場合は、目的の結果が得られるまでWSDLを微調整します。

11
Bogdan