2013-05-31 73 views
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循環執行後做,帶寬是完全不同的。

哪種方法是正確的?文件何時完全下載?

回答

0

據我瞭解,它是同步的,反對異步,響應存儲經過這麼右邊是在下載結束

+0

所以你的意思是我應該放棄while循環?如果我這樣做,那麼我得到的帶寬就像100Mbps,這有點太高。 – Nemin

+0

http://www.speedtest.net/在這裏檢查 – Stefabro

+0

如果你想保持循環,你可以做一些更高效的使用字符串生成器,例如,如果你計算了for循環的行數知道有多少,所以你更準確地通過分解一些不好的時間 – Stefabro

相關問題