当文件太大时,HttpWebResponse contentlength = -1

本文关键字:HttpWebResponse contentlength 文件 | 更新日期: 2023-09-27 18:03:31

我从烂番茄网站获得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。

当文件太大时,HttpWebResponse contentlength = -1

当contentLength返回-1时,这很可能是因为响应以块传输编码返回(或者可能是http "0.9")。因此,在传输开始时没有已知的内容长度。只要读你的StreamReader直到最后,你就会得到服务器发送给你的所有内容。

预期行为-属性返回由服务器设置的内容长度,因此如果该头未设置,则得到-1(这可能是从服务器流式传输的大文件的行为)。

HttpWebResponse。ContentLength:

备注:ContentLength属性包含响应返回的Content-Length报头的值。如果响应中没有设置Content-Length头,则将ContentLength设置为值-1