如何阅读网络回复的内容?我尝试使用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);
}
答案 0 :(得分:2)
使用UTF8.GetString()
会错误地假设内容是原始的UTF-8字节;它可能是任何其他编码。
相反,您应该使用oSession.GetResponseBodyAsString()
方法。现在,请记住,如果响应实际包含一个正文,则只返回一个字符串。例如,如果它是HTTP/304
响应(意思是“从缓存中重用版本”),则不会有正文字节。但是,您会看到OnReadResponseBuffer
仍然会触发,因为HTTP / 304标头块将通过该函数传递。