我有一个小的Java的Apache的HttpCore 4基于客户端类,将调用一个服务,我想测量HTTP请求/响应往返的响应时间。 我以为会有从HttpResponse对象的元数据读取它的方式。 但我没能获得在响应对象的响应时间。 所以,我的解决办法我存储在打电话之前的时间再测一次拨打电话后,不同的是所经过的时间。
BasicHttpRequest request = new BasicHttpRequest("GET", target);
request.setParams(params);
httpexecutor.preProcess(request, httpproc, context);
long start = System.nanoTime();
HttpResponse httpResponse = httpexecutor.execute(request, conn, context);
long elapsed = System.nanoTime() - start;
System.out.println("Elapsed nano seconds -->" + elapsed);
httpResponse.setParams(params);
httpexecutor.postProcess(httpResponse, httpproc, context);
对于例如,我得到以下经过时间:经过时间 - > 1561599815
而且我可以从响应对象以下值阅读下面的标题,但我找不到任何相关的响应时间:
| Server --> Apache-Coyote/1.1 |
| Date --> Mon, 26 Aug 2013 19:22:00 GMT |
| Content-Type --> application/json |
| Transfer-Encoding --> chunked |
上述溶液是难看特意在异步非阻塞代码,其中我不得不作出由匿名内部功能FutureCallback回调函数调用。 像这样:
requester.execute(new BasicAsyncRequestProducer(target, request),
new BasicAsyncResponseConsumer(), pool,
new BasicHttpContext(),
// Handle HTTP response from a callback
new FutureCallback<HttpResponse>() {
private int startTime; ...//etc
所以这个代码是不优雅。 我想获得响应对象给我的http流量所经过的时间。 我怎样才能做到这一点?
我使用的HttpClient 4.2的HttpCore氧化镍4.2,httpasyncclient 4.0测试版。