SOAP Web サービスが特定の WebMethod をサポートしているかどうかを確認できますか?

StackOverflow https://stackoverflow.com/questions/108499

  •  01-07-2019
  •  | 
  •  

質問

当社の Web サービスは、さまざまな理由 (クライアントへの待ち時間の短縮など) でさまざまなサーバーに分散されており、常にすべてが最新であるとは限りません。メソッドが実行されたときに例外をスローするのではなく、 しません 特定の Web サービスが古すぎるために存在する場合、呼び出す前にサービスが特定のメソッドに応答するかどうかをクライアントにチェックさせ、そうでない場合はその機能を無効にする (または回避策) ことができれば、より良いでしょう。

それを行う方法はありますか?

役に立ちましたか?

解決

Web サービスを単体テストして、署名が壊れていないことを確認します。メソッドのシグネチャを破壊するコードを作成すると、それがわかり、それに応じて他のアプリケーションを調整できます。

あるいは、Web サービスを壊さずに、バージョン管理できる方法で公開してください。のように http://services.domain.com/MyService/V1.1/Service.asmx (.NET の場合) これにより、v1.2 を公開して重大な変更を加えたときに、v1.1 を使用するアプリケーションが壊れることがなくなります。

Web サービスの管理が本当に面倒な場合は、内部 UDDI サーバーの使用も検討してみます。UDDI のグリーン ページを使用すると、サービスについて知りたいことがわかります。

他のヒント

WSDL を取得します (URL に ?wsdl を追加します) - 好きな方法で解析できます。

SOAP リクエストを行うときは、HTTP リクエストをサーバーに送信するだけです。サーバーがそれを理解すると、HTTP 200 と XML で応答します。理解できない場合は、エラー HTTP コード (404、500、...) を送信します。

Web サービスによって公開される「メソッド」の存在を問い合わせる一般的な方法はありません。自動の場合は公開された WSDL を使用してみてください。または、単に「メソッド」を使用して応答内のエラーを確認してみてください (ユーザーに例外を送信する必要はありません...)。

また、よく理解できたかわかりませんが、サーバーに 2 回クエリを実行し、1 回目はメソッドが存在するかどうかを確認し、2 回目はメソッドが存在する場合に実際に呼び出すことを考えていますか?エラーが発生しない場合はエラーを確認し、エラーが発生する場合は通常どおりに続行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top