我需要读取响应的正文,其中Content-Length
被明确指定为零。但是stream.Read
不会读取任何内容并返回0
。如果Content-Length
标头不存在,它将成功读取所有字节。
当我在浏览器中打开网页时,它是空的,但是我可以在Fiddler中看到其内容。
有什么方法可以使Stream
为0时从GetResponseStream
返回的Content-Length
读取字节吗?
示例响应:
HTTP/1.1 200 OK
Cache-Control: public, must-revalidate
ETag: "c7f40cb26b1e95c2245f1584371465582f996a8a88b34a2cc99bbe922b1a2857"
Vary: Accept-Encoding
X-Request-Id: 4b799b6d-cd68-47f7-a392-4fd0a327f5de
X-Runtime: 0.001646
Content-Length: 0
- some content -
代码的简化版本:
using(var stream = httpRes.GetResponseStream())
{
while (true)
{
var bytesRead = stream.Read(
responseBuffer,
0,
responseBuffer.Length);
// other stuff
}
}
答案 0 :(得分:1)
当HTTP / 1.1的Content-Length:0时,根据定义,没有有效载荷要读取。如果后面跟随字节,则按照定义,它们是对后续请求的响应。
现在,显然,这里不是这种情况。因此,请绝对清楚:您正在寻求一种解决方法来处理损坏的服务器。相反,修复服务器会更清洁。