0

固定サイズのファイルをダウンロードするのにかかる時間を特定して、ネットワークの帯域幅を計算しようとしています。

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 ループの実行後に実行すると、帯域幅がまったく異なります。

どのアプローチが正しいですか?ファイルが完全にダウンロードされるのはいつですか?

4

1 に答える 1

0

私の理解では、それは非同期ではなく同期であるため、応答が保存された直後にダウンロードが終了します

于 2013-05-31T17:44:23.653 に答える