0

如何阅读 Web 响应的内容?我尝试使用 FiddlerCore 来检查响应。可以隔离正确的请求和响应。但我只能获取正在发送的文件的标题。我需要内容。但在 AfterSessionComplete 方法中它始终为空。OnReadResponseBuffer 方法中似乎确实有一些二进制数据。也许它是按照标题中的说明压缩的?关于如何阅读响应内容的任何想法。也欢迎不使用提琴手的想法。

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 回答