.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
[Web参照の追加]ダイアログをカスタマイズするには?
[Silverlight 2]ASP.NET開発サーバでclientaccesspolicy.xmlを利用するには?
VS 2005やIISを使用せずにWebアプリケーションを実行するには?
Windowsサービスのサービス名を列挙するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間