HTTP 簡易テストツール 「Ship-a-tie」

2009-05-04 06:40:32 | PC > Program


HTTP の簡易テストツールを作ってみました。HTML アプリケーションと呼ばれる HTML+JavaScript で記述されたプログラムです。元々は自分用に書いたものですが、ある程度形になったので公開することにしました。httpc というコードネームで開発していたため、ファイル名やソースにその名残が残りますが、アプリケーション名は Ship-a-tie (シパタイ) です。

リクエストメッセージを入力して [Send] ボタンを押すとレスポンスメッセージを取得することができます。用途としては HTTP クライアント機能を持つアプリケーションの通信をシミュレートしたり、Proxomitron のような HTTP フィルタリングツールのデバッグに利用したり、HTTP プロトコルのお勉強に使ってみたり・・・といったところでしょうか。かなりユーザが限定されるツールですが、興味のある方は使ってみてください。ダウンロードは下記からどうぞ。解凍後、httpc.hta を実行してください。

http://www17.plala.or.jp/ghostwind/archive/httpc.zip

各部の説明は以下の通りです。



リクエストメッセージ


Method: リクエストメソッドを指定します。

URL: アクセス先リソースの URL を指定します。WinHttpRequest コンポーネントの仕様上、URL に使われる文字列は UTF-8 で送信されます。他の文字セットを用いる場合は URL エンコードが必要となります。

※コンポーネントは URL として渡された文字列を Unicode であると解釈し、リクエストの際 UTF-8 に変換して送出する。そのため Unicode 以外の文字列を渡しても正しく処理されない。

Request Headers: リクエストヘッダを指定します。送信時は空行およびコメント行("//" で始まる行)は無視されます。先頭に一つ以上の空白(半角スペースまたは水平タブ)が挿入されている行は継続行と見なされ、直前の行と半角スペースで結合されます。以下の例では (a) は (b) として扱われます。
(a) User-Agent: Mozilla/4.0
     (compatible; MSIE 6.0; Windows NT 5.1)

(b) User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

次に挙げるヘッダは値の指定がない場合、デフォルト値がセットされます。これは WinHttpRequest コンポーネントの仕様です。
Accept: */*
User-Agent: [Internet Explorer で使われる値]
Host: [アクセス先リソースのホスト名およびポート番号]
Connection: Keep-Alive

またリクエストにメッセージボディが含まれる場合、Content-Length ヘッダにそのサイズがセットされます。ユーザ指定の値は無視されます。
Content-Length: [メッセージボディのサイズ]

Data: 送信するデータを指定します。送信時は空行およびコメント行("//" で始まる行)は無視されます。データは Charset の文字セットとして URL エンコードされ、メソッドが POST のときはメッセージボディに、それ以外のメソッドでは URL のクエリ文字列にセットされます。エスケープ済みの文字列をデータとして用いる場合は Disable URL-encode にチェックを入れて URL エンコードを無効にしてください。ただしエスケープが必要な文字が含まれている場合、Charset の設定にかかわらず UTF-8 の文字として扱われます。

メソッドが PUT のときはアップロードするファイル名が表示されます(現在アップロード機能は未実装)。

Disable URL-encode: Data, Import 及び Copy の項を参照のこと。

Charset: Data, Import 及び Copy の項を参照のこと。

Select File: PUT メソッドでアップロードするファイルを選択します。

Enable redirect: レスポンスヘッダで Location が返された場合、自動的にリダイレクトするかを指定します。

Enable proxy: プロキシの設定をします。デフォルトはインターネットオプションで指定されている設定が読み込まれます。

Load: 保存したリクエスト設定を呼び出します。削除やリネームもここで行います。

Save: 表示中のリクエスト設定を保存します。保存先は [Ship-a-tie]/request/ です。

Import: クリップボードにコピーした URL やリクエストメッセージを取り込みます。URL に含まれるクエリ文字列は Data フィールドに展開されます。URL エンコード文字列は Charset の文字コードであると解釈してデコードされます。データをデコードすることなく取り込みたい場合は Disable URL-encode にチェックを入れてください。

※Proxomitron のログウィンドウからの取り込みも想定しており、View Posted data を有効にしている場合、表示される Post データも含めてインポートすることが可能です。

Copy: 表示中のリクエストメッセージをクリップボードにコピーします。Data フィールドの文字列は Charset の文字コードで URL エンコードされます。ただし Disable URL-encode にチェックが入っている場合、URL エンコードは行われません。

Send: リクエストメッセージを送信します。


レスポンスメッセージ


Status: サーバが返すステータスとその説明です。

Response Headers: サーバが返すレスポンスヘッダです。

Response Text: サーバが返すデータを Charset の文字コードと解釈してデコードします。生のバイナリデータはアプリケーションの内部で保持されます。

Charset: 通常は auto で問題ありませんが、Response Text のテキストが文字化けするときは任意の文字コードを指定してください。ただし受け取ったデータがテキスト形式でない場合、この設定は意味を持ちません。

Open response folder: [Ship-a-tie]/response/ を開きます。

Save: サーバから受け取ったバイナリデータをそのままファイルに保存します。テキストのデコード処理は行われません。保存先は [Ship-a-tie]/response/ です。


仕様


通信は同期式で行われるため、すべてのデータがダウンロードされるまでアプリケーションに制御が戻りません。ダウンローダーとしての使用は想定していないため、大きなサイズのファイルをリクエストする際は注意してください。


その他の機能


Authorization ヘッダを使ってベーシック認証をする場合、username:password の形式で記述しておけば自動的に Base64 でエンコードされた値が送信されます。
1) 入力データ
Authorization: Basic usename:password

2) 送信データ
Authorization: Basic dXNlbmFtZTpwYXNzd29yZA==


最新の画像もっと見る