.NET TIPS

SOAPメッセージをトレースするには?

デジタルアドバンテージ
2003/07/18

 Webサービスやそのクライアントのデバッグでは、クライアントから発行されるSOAPリクエストや、サーバとクライアント間でやり取りされるSOAPメッセージをトレースし、そのメッセージ内容を確認したいときがある。このような場合には、「Microsoft SOAP Toolkit」に含まれるトレース・ユーティリティ「MSSoapT」を便利に活用できる。次の画面は、このMSSoapTを使用して、実際にSOAPメッセージのトレースを行っているところだ。

MSSoapTによるSOAPメッセージのトレース例
MSSoapTはMicrosoft SOAP Toolkitに含まれるツールである。このツールを使用するとWebサービスとそのクライアント間でやり取りされるSOAPメッセージの内容をのぞき見ることができる。

 Microsoft SOAP Toolkitは、非.NET環境で動作するWebサービスおよびWebサービス・クライアントを実装するためのツールキットであり、マイクロソフトより無償で提供されている。日本語版の最新バージョンは次のリンクよりダウンロードできる。

 ツールキットにはいくつかのコンポーネントやドキュメントなどが含まれているが、SOAPメッセージをトレースするだけなら、セットアップ時にMSSoapT([Debugging Utilities]の項目)だけを選択してインストールすればよい。

MSSoapTの使用例

 ここではMSSoapTの使用例として、コンピュータ用語辞書のWebサービスであるNetDictionaryと、そのクライアントのサンプル・プログラム(WinICD)を用いた場合について解説する。これらはどちらも.NET Framework上で動作する、シンプルなXML WebサービスとWindowsアプリケーションである。

 まずはこのサンプル・プログラムを展開し、ソリューション・ファイルであるWinICD.slnをダブルクリックして開いて、Visual Studio .NET(VS.NET)上からWinICDが正しく実行できることを確認していただきたい。次の画面のようにコンピュータ用語が検索でき、その意味が表示されていればOKだ。

コンピュータ用語辞書Webサービスのサンプル・クライアントWinICD
このサンプル・プログラムは、WebサービスであるNetDictionaryにアクセスして、コンピュータ用語の意味を調べることができる。

 次に、ソリューションを開いているVisual Studio .NETから、プロキシ・クラスを定義している「icd.cs」を選択してコードを表示させる(このコードはWeb参照の追加により自動生成されたものである)。プロキシ・クラスであるICDクラスのコンストラクタが次のように定義されているはずだ。

  public ICD() {
    this.Url = "http://www.iwebmethod.net/icd1.0/icd.asmx";
  }

 まず、URLのホスト名部分(www.iwebmethod.net)を次のように、「localhost:8080」に書き換える。www.iwebmethod.netはNetDictionary Webサービスを提供しているサーバである。

  public ICD() {
    //this.Url = "http://www.iwebmethod.net/icd1.0/icd.asmx";
    this.Url = "http://localhost:8080/icd1.0/icd.asmx";
  }

 これにより、WinICDの実行時には、Webサービスを呼び出すためにローカル・ホストの8080番ポートにアクセスしようとする。

 次にMSSoapTを起動し、メニューより[File]−[New]−[Formatted Trace]を実行する。これにより次のようなダイアログが開く。

MSSoapTのトレース設定ダイアログ
Webサービスのクライアント側でSOAPメッセージをトレースするには、まずこのダイアログで監視するローカル・ホストのポート番号と、フォワード先(Webサービス)のサーバおよびサーバのポート番号を指定する。そして[OK]ボタンをクリックするとトレースが開始される。

 このダイアログで、「localhost」となっている[Destination host:]の部分を、先ほどコード上で修正したWebサービスのサーバである「www.iwebmethod.net」に書き換える。ここでの設定の意味は、ローカル・ホストの8080番ポートを監視し、そこに来るアクセスをwww.iwebmethod.netの80番ポートにフォワードするということだ。つまり、MSSoapTはプロキシ・サーバのように動作し、この設定によりWinICDからのWebサービス呼び出しはいったんMSSoapTを経由してサーバに届くようになる。

 [OK]ボタンをクリックするとトレースが開始する。WinICDを実行して“C#”を検索したときにやり取りされるSOAPメッセージを表示しているのが冒頭のMSSoapTの画面である。End of Article

カテゴリ:開発環境&ツール 処理対象:Webサービス
 
この記事と関連性の高い別の.NET TIPS
[Silverlight 2]ASP.NET開発サーバでclientaccesspolicy.xmlを利用するには?
[Web参照の追加]ダイアログをカスタマイズするには?
Windowsサービスのサービス名を列挙するには?
VS 2005やIISを使用せずにWebアプリケーションを実行するには?
[ASP.NET]ASP.NET開発サーバのポート番号を固定するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ


- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

第1回 BtoBマーケティングの実践における「可視化」の目的と設計方法
BtoBマーケティングにおける「可視化」とは、顧客企業の購買プロセスを明らかにすること...

第2回 技術の進化がマーケティングに与えたインパクト
第2回では、新しいKKD(「仮説」「検証」「データ分析」)が意味を持つようになった時代...

第5回 Webサイトの目的を社内で共有する――他部署をうまく巻き込むには?
遠藤さんのプレゼンがいよいよ始まる。Webサイトのリニューアルプランに「ソーシャルメデ...