正如标题所说。
有时来自远程服务器的HTTP响应包含值为零的Content-Length标头,但仍然返回HTTP正文。仍然可以在浏览器中使用jQuery获取正文,但使用HttpWebResponse.GetResponseStream()无法读取任何内容。我该怎么强行阅读呢?谢谢大家。
以下是我遇到的HTTP响应示例。
HTTP / 1.1 200确定
连接:保持活力
缓存控制:无缓存,无存储
Content-Type:text / plain
内容长度:0
日期:星期一,2013年9月30日09:34:21 GMT
(HTTP正文)
答案 0 :(得分:0)
查看源代码,我无法找到强制此行为的方法。可能你无能为力。
尝试禁用HTTP流水线操作。在这种情况下,HttpWebRequest可能不依赖于内容长度。它不太可能有所帮助。
使用不同的HTTP库,或使用TcpClient
发送请求。您可以使用Fiddler复制模板HTTP请求,并将其用作您的基础。不应该做很多工作。
您还可以创建一个删除标头的重写代理。这可能是一项努力的解决方案。
答案 1 :(得分:0)
第一个问题 - 你在哪里获得HTTP响应?您是否使用Fiddler捕获它,或者您是否通过检查调试器中的HttpWebResponse来键入您认为您所看到的内容?我建议用Fiddler运行它,并检查完整的响应标头,如果你还没有。
如果返回的Content-Length值为零,或者项目中的某些其他代码导致您将其解释为零或将内容长度的副本设置为零,则需要首先建立
我认为这里发生了两件事之一:
哈罗德