固定サイズのファイルをダウンロードするのにかかる時間を特定して、ネットワークの帯域幅を計算しようとしています。
starttime=Calendar.getInstance().getTimeInMillis();
HttpResponse response=cts.getContent();
if(response != null)
endtime=Calendar.getInstance().getTimeInMillis();
これが私のgetContent()
方法です:
public HttpResponse getContent()
{
HttpClient httpClient = new DefaultHttpClient();
HttpGet postRequest = new HttpGet("myserverurl");
try {
Log.i(tag,"before execute");
HttpResponse response = httpClient.execute(postRequest);
Log.i(tag,"after execute");
HttpEntity httpEntity = response.getEntity();
is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
Log.i(tag,sb.toString());
response.toString();
return response;
} catch (Exception e) {
Log.i(tag,"execption="+e);
return null;
}
}
このメソッドが応答する終了時間を計算します。私の質問は、終了時間を計算する適切な時間はいつですか? 行の直後に終了時間を取得すると:
HttpEntity httpEntity = response.getEntity();
得られる帯域幅は非常に高く、while ループの実行後に実行すると、帯域幅がまったく異なります。
どのアプローチが正しいですか?ファイルが完全にダウンロードされるのはいつですか?