Http 監視

概要

Curl® IDE により、Curl® 言語アプレットが生成する http トラフィックを監視するメカニズムが提供されます。Http 監視はアプレットによって行われた http API 呼び出しと、その呼び出しの結果についての情報を提供します。Http 監視はネットワーク上の実際のトラフィックを監視するものではありません。アプレットに http 要求への正常な正しいレスポンスがなされた場合、それが web サーバーに対しての要求ではなく、ローカル マシンのキャッシュによって処理された要求の場合でも、Http 監視はこれを報告します。
この機能は Curl Pro/IDE でのみ利用できます。「Curl 及び Curl Pro 製品」をご覧ください。Curl の http 監視は、IDE ユーザー インターフェイスを通じて、または監視 API からの機能をソース コードに組み込むことによって使用できます。
http 監視の開始と停止は、アプレットのインスペクタのコンテキスト メニューから行えます。ブラウザ ウィンドウで実行中のアプレットをコントロール右クリックしてこのメニューにアクセスし、[Http 監視の開始/停止] を選択します。監視を開始すると、IDE が空の一時データ ファイルに Http 監視ウィンドウを自動的に開きます。アプレットが http アクションを実行すると、モニタは各パケットのデータをこのファイルに格納し、監視ウィンドウに情報を表示します。
この一時ファイルは、後で使用できるように、Http 監視の [ファイル] メニューにある [保存] コマンドを使用して保存できます。また、保存したファイルは、[ファイル] メニューから開くことができます。

IDE Http 監視ウィンドウ

Http 監視ウィンドウには 2 つのペインがあります。右側のペインは、各 http パケットに関する情報を以下の列に表示するレコード グリッド表示です。
既定では、グリッドは時刻順に並べられます。
右ペインには、グリッド内の現在選択されているパッケージの内容が表示されます。メニューを使用して、データをテキスト、バイナリ、またはログ ファイルで使用されている実際のフォーマットのうちどれで表示するかを選択できます。 http コードがバイト ストリームを直接ラップするテキスト ストリームを使用したかどうかによって、 監視ウィンドウはテキストまたはバイナリのどちらかを自動的に選びます。 バイト ストリームを直接ラップするテキストストリームは、通常はテキスト読み取り操作時に使用されます。
Http 監視ウィンドウには以下のメニューがあります。

[ファイル] メニュー

[フォーマット] メニュー

[フォーマット] メニューでは、[パケットの内容] ペインにパケット データを表示するために使用されるフォーマットを選択できます。

Http 監視 API

要約:
  • ソース コードに関数呼び出しを追加することで、プロファイリング データを収集できます。
  • データは指定されたファイルに保存されます。
監視 API の呼び出しをコードに追加することで、アプレットによって生成された http トラフィックを自動的に監視できます。この API はパッケージ CURL.IDE.PERFORMANCE に入っていて、以下のプロシージャを含んでいます。

監視の例

次のコード サンプルを使用して、http 監視を試してみることができます。そうするには、このドキュメント ビューア ウィンドウ内の任意の場所をコントロール右クリックしてインスペクタ コンテキスト メニューを呼び出し、[Http 監視の開始] を選択する必要があります。Http 監視ウィンドウが表示されるので、注意してください。次に、コマンド ボタンをクリックし、http:// で開始する URL (例えば、http://www.curl.com など) を入力します。監視ウィンドウのグリッド表示にレコードが現れるので、注意してください。レコードを選択し、左側のペインでパケット内容を観察します。

例: http 監視を開始するにはコントロール右クリックを使用します。
{let buffer:TextFlowBox =
    {TextFlowBox width=5in, border-width=1pt,
        border-color="black", margin=2pt
    }
}
{VBox
    buffer,
    {CommandButton
        label="Select a URL to Read",
        {on Action do
            {buffer.clear} 
            let file-url:#Url = {choose-location 
                                    default-location = {url "http://www.curl.com"},
                                    title = "Demonstrate HTTP monitoring",
                                    label = "Read from www.curl.com"
                                }
            {if-non-null file-url then
                let myinput:#TextInputStream
                {try
                    set myinput={read-open file-url}
                 catch err:IOException do
                    {buffer.add {text A problem occurred while opening the file:
                                    {value err.message}
                                }
                    }
                }
                {if-non-null myinput then
                    {try
                        {until myinput.end-of-stream? do
                            {buffer.add {myinput.read-line}}}

                     catch err:IOException do
                        {error
                            "A problem occurred while reading the file: "
                            & err.message
                        }
                     finally
                        {myinput.close}
                    }
                }
            }
        }
    }
}