使用Apache Httpclient获得真正的响应时间

时间:2016-01-12 03:23:39

标签: apache-httpclient-4.x

我试图确定衡量从HTTP请求获取完整响应所花费的全部时间的正确方法。从HTTP GET发送的时间到客户端从服务器获取最后一个实体字节的时间。

最好的方法是什么?

例如,在这个从httpclient教程中借用的修改版代码中。下面是否会给我从服务器获取整个MP4所需的时间?

CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet("http://server_ip/video.mp4");
//Start the timer here
long start_time = System.currentTimeMillis();
CloseableHttpResponse response = httpclient.execute(httpget);
try {
   HttpEntity entity = response.getEntity();
   if (entity != null) {
     InputStream instream = entity.getContent();
     try {
         final byte[] lBytes = new byte[4096];
         do{
            //Consume 4KB from the entity inputStream
            instream.read(lBytes);
         } while(instream.read(lBytes) != -1)

         //Stop the timer here
         long stop_time = System.currentTimeMillis();

         //Get total download time?
         long mp4DownloadTime = stop_time - start_time;
     }
     finally {
         instream.close();
     }
   }
} 
finally {
  response.close();
}

这有什么意义吗?我不太了解HttpClient如何处理实体内容。当在接口上运行tcpdump时,我看到无论我在Java代码中使用什么,我都得到了完整的实体...任何指导都将不胜感激。

0 个答案:

没有答案