0

Web 応答の内容を読むにはどうすればよいですか? FiddlerCore を使用して応答を調べてみました。正しいリクエストとレスポンスを分離することができます。しかし、送信中のファイルのヘッダーしか取得できません。コンテンツが必要です。ただし、AfterSessionComplete メソッドでは常に空です。OnReadResponseBuffer メソッドにはバイナリ データが含まれているようです。ヘッダーに示されているようにgzipされているのでしょうか?応答の内容を読み取る方法に関する任意のアイデア。フィドラーを使わないアイデアも大歓迎です。

void FiddlerApplication_AfterSessionComplete(Fiddler.Session oSession)
{
    listBox1.Invoke(new UpdateUI(() =>
    {
        if (oSession.PathAndQuery.Contains("mobj.php"))
        {
            listBox1.Items.Add("   " + oSession.fullUrl);
            byte[] body = oSession.ResponseBody;
            string body_string = System.Text.Encoding.UTF8.GetString(body); // always empty
        }
    }));
}

static void FiddlerApplication_OnReadResponseBuffer(object sender, RawReadEventArgs e)
{
    string bla = "";

    if (e.sessionOwner.fullUrl.Contains("mobj.php"))
        bla = System.Text.Encoding.UTF8.GetString(e.arrDataBuffer);
}
4

1 に答える 1

2

を使用UTF8.GetString()すると、コンテンツが生の UTF-8 バイトであるという誤った仮定が行われます。他のエンコーディングでもかまいません。

代わりに、メソッドを使用する必要がありますoSession.GetResponseBodyAsString()。ここで、応答に実際に本文が含まれている場合、これは文字列のみを返すことに注意してください。たとえば、HTTP/304応答 (「キャッシュからバージョンを再利用する」という意味) の場合、本文バイトはありません。OnReadResponseBufferただし、 HTTP/304 ヘッダー ブロックがその関数を介して渡されるため、それでも起動することがわかります。

于 2013-10-21T18:27:56.133 に答える