我需要获取内容长度才能告诉我的应用程序缓冲区在哪里结束。问题是 httpwebresponse.ContentLength 返回 -1 即使 Content-Length 标头在响应中出现。
然后我虽然我要阅读实际的标题以找出长度。我正在测试的页面返回的 Content-Length 是 1646。HTTP 嗅探器声称我收到了 1900 个字节,所以我假设差异是标头长度。然后我从响应中复制了整个身体并将其粘贴到在线strlen网站上,身体尺寸实际上是1850!
这怎么可能?为什么响应返回无效的内容长度,为什么 httpwebrequest.ContentLength 返回 -1?在收到响应本身之前,如何计算实际响应长度?
编辑:这是我用来获取响应的代码:
using (System.IO.Stream responseStream = hwresponse.GetResponseStream())
{
using (MemoryStream memoryStream = new MemoryStream())
{
int count = 0;
do
{
count = responseStream.Read(buffer, 0, buffer.Length);
TCP_R.SendBytes(buffer);
} while (count != 0);
}
}
byte[] PACKET_END_IDENTIFIER = { 0x8, 0x01, 0x8, 0x1, 0x8 };
TCP_R.SendBytes(PACKET_END_IDENTIFIER);
TCP_R.Close();
我有一个代理服务器应用程序接受请求,将其发送到另一个应用程序(我的客户端)客户端执行请求并使用 TCP_R 类返回结果。当服务器从客户端获得响应时,它会将响应返回给浏览器。
每次我做一个请求,我都会得到所有的数据+额外的垃圾,这里有一个例子:
<tag1><tag2><tag3> ag3>
ag3> 是垃圾数据,就像缓冲区的结尾被切断并重新添加一样。它appears客户端响应一个有效的响应,垃圾数据添加onDataRecieve事件..任何提示?谢谢!