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

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

当contentLength返回-1时,这很可能是因为响应是以分块传输编码 (或可能是http“0.9”)返回的。 因此,在传输开始时没有已知的内容长度。 只需阅读您的StreamReader直到最后,您将拥有服务器发送给您的所有内容。

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

HttpWebResponse.ContentLength :

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