我试图确定衡量从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代码中使用什么,我都得到了完整的实体...任何指导都将不胜感激。