3

我从烂番茄网站上得到一个 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。

4

2 回答 2

9

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

于 2013-03-13T01:39:15.337 回答
3

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

HttpWebResponse.ContentLength

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

于 2013-03-13T01:39:06.230 回答