HTTPモニタとは?
WebアプリケーションやSOAP、JSONなどでHTTPベースのプロトコルを利用した通信を伴うアプリケーションを開発している場合、デバッグや障害解析などのために実際にHTTPでどのような内容の通信が行われているかを参照したいことがある。このような場合に利用できるのがHTTPモニタだ。
HTTPモニタにはさまざまなものがあるが、今回はFirefox拡張であるLive HTTP Headers、EclipseのWTPに標準で付属するTCP/IPモニタ、Windowsのスタンドアロンアプリケーションとして利用可能なFiddler2の3つを紹介する。
Live HTTP Headers
Live HTTP HeadersはFirefoxの拡張として利用可能なHTTPヘッダのモニタリングツールだ。
インストール後、Firefoxの[ツール]メニューの[Live HTTP headers]から起動できる。FirefoxでアクセスしたページのHTTPリクエストヘッダ、レスポンスヘッダを参照することができる。
また、[ジェネレータ]タブにはFirefoxから送信されたリクエストデータが記録されており、テキストファイルにエクスポートすることができる。これはFirefox上で行った動作をテストツールなどで再現するために用意されている機能とのことだ。
なお、IEにも同様の機能を実現する拡張としてieHTTPHeadersが存在する。
EclipseのTCP/IPモニタ
EclipseのWTPには標準で簡易的なTCP/IPモニタが用意されている。WTPではWebアプリケーションやWebサービスなどの開発が可能だが、ローカル環境での開発中に通信内容を確認したいという程度の用途であればこれでも充分だ。
EclipseでTCP/IPモニタを利用するには[ウィンドウ]メニュー-[ビューの表示]-[その他]でビュー選択ダイアログを開き、[デバッグ]カテゴリから[TCP/IPモニター]を選択する。
するとTCP/IPモニタービューが表示されるので、ビューのプルダウンメニューから[プロパティー]を選択し、TCP/IPモニターの設定を行うためのダイアログを開く。EclipseのTCP/IPモニターはプロキシとして動作するため、実際にアプリケーションが稼動しているマシンのホスト名とポート番号、ローカル・プロキシのポート番号を設定したうえでモニターを起動しておく。
Webブラウザなどでアプリケーションの動作確認を行う際、実際のアプリケーションのURLの代わりに上記で起動したモニタに対してアクセスすると、以下のようにリクエストやレスポンスの内容がTCP/IPモニタービューに表示される。リクエスト、レスポンスのヘッダおよびボディを参照できるほか、任意のリクエストを選択して再送することも可能だ。
Fiddler2
Fiddler2はWindows上のスタンドアロンアプリケーションとして利用可能なHTTPモニタだ。前述のEclipseのTCP/IPモニターと同様ローカルプロキシとして動作する。
Fiddlerを起動すると自動的にインターネットオプションのプロキシ設定が変更され、IEやChromeなどからのアクセスがFiddlerを経由するようになる(Fiddlerを終了すると元に戻る)。
Fiddlerは非常に高機能で、単純にリクエストやレスポンスの内容をキャプチャして参照できるだけでなく、キャプチャする通信をフィルタリングしたり、自分で作成したリクエストを送信することも可能だ。AjaxやRESTのAPIのテストなどに便利だろう。
少し変わったところではキャプチャしたデータをVisual Studio Web Testとして保存できたり、JScriptで機能を拡張することも可能だ。インタフェースが英語だったり、高機能な分複雑な画面構成となっていたりとやや取っつきの悪さはあるものの、一度慣れてしまうと手放せないツールになりそうだ。
まとめ
最近ではSOAPを使用したWebサービスはもちろんのこと、通常のWebアプリケーションでもJSONなどを使用したAjaxによる非同期通信などを用いるケースが多い。こういったアプリケーションを開発する際に通信内容を確認したいという場面は多いはずだ。今回紹介したツールはどれも手軽に使えるものばかりなのでぜひ活用してほしい。