3

Rotten Tomatoes の Web サイトから 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 の contentlength は -1 です。4 つの映画の結果を返す場合、contentlength は 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 に答える