URLからデータを取得する必要があります。GETを使用して複数のページからJSONデータを取得する
以下のコードは、「過去のファイルの終わりを読む」というエラーを示しています。 URLは正しいですが、ブラウザに貼り付けて結果を見ることができます。私はそれについて何かできることがあるかどうか確かではない、時間制限を超過しました。
問題は、データが複数のページにある可能性があることです。私はpage1からtotal_pagesを選択してループを実行する必要がありますか?より良い解決策はありますか?
ここにコードされています
string url="https://jsonmock.hackerrank.com/api/movies/search/?Title=spiderman&page=1";
string res=MakeRequest(url);
MakeRequest:
static public string MakeRequest(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/json; charset=utf-8";
request.PreAuthenticate = true;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
return (reader.ReadToEnd());
}
}
ここでは、データ(PAGE2)がHttpClientを使用して
{"page":"2","per_page":10,"total":13,"total_pages":2,"data":[{"Poster":"N/A","Title":"They Call Me Spiderman","Type":"movie","Year":2016,"imdbID":"tt5861236"},{"Poster":"N/A","Title":"The Death of Spiderman","Type":"movie","Year":2015,"imdbID":"tt5921428"},{"Poster":"https://images-na.ssl-images-amazon.com/images/M/MV5BZDlmMGQwYmI[email protected]@._V1_SX300.jpg","Title":"Spiderman in Cannes","Type":"movie","Year":2016,"imdbID":"tt5978586"}]}
はいを省略してGetMoviesAsyncを()を改善多くのデータを取得するのを避けるために、複数のページが正常です。ただし、呼び出し回数が多すぎると感じる場合は、APIが大きなページ(ページあたりの項目数)を許可するかどうかを確認してください。 – Alexei
完全な例外(スタックあり)も含めることができますか? – Alexei
Alexei、 "しかし、あなたが過度の呼び出しを行っていると感じたら、APIが大きなページ(ページあたりの項目)を許可するかどうかを確認してください。 何を確認するかわかりません。唯一の方法は、ページのリクエストが失敗するまでループ内で別々に各ページからデータを取得することですか? – anjulis