我从烂番茄网站获得了json格式的字符串。我的代码看起来像
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
webRequest.Method = "GET";
webRequest.ContentType = "application/json";
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
using(StreamReader reader = new StreamReader(response.GetResponseStream()))
{
//Code I'm using the reader with
}
当我运行一个返回1-4电影的电影搜索时,它可以正常工作。但是,如果我尝试获得5或更多的结果,它将无法正常工作。 webResponse内容长度为-1。当我返回4部电影的结果时,内容长度为7,449。
答案 0 :(得分:8)
当contentLength返回-1时,这很可能是因为响应是在chunked transfer encoding(或可能是http“0.9”)中返回的。因此,在传输开始时没有已知的内容长度。只需阅读StreamReader
直到最后,您就可以获得服务器发送给您的所有内容。
答案 1 :(得分:3)
预期行为 - 属性返回服务器设置的内容长度,因此如果未设置该标头,则获得-1(这可能是从服务器流式传输的大型文件的行为)。
HttpWebResponse.ContentLength:
备注:ContentLength属性包含随响应返回的Content-Length标头的值。如果未在响应中设置Content-Length标头,则ContentLength将设置为值-1