pmp*_*mpm 3 java http jetty jetty-9 http2
我正在使用 Jetty Client 11,并且想计算每个请求发送/接收的字节。
我正在使用高级 HttpClient 。我已阅读此文档,但没有看到任何有关如何执行此操作的信息:
我发现有一种方法可以通过执行以下操作来获取此信息:
ConnectionStatistics connectionStatistics = new ConnectionStatistics();
httpClient.addBean(connectionStatistics);
Run Code Online (Sandbox Code Playgroud)
然后:
Request request = httpClient.newRequest(uri)
.version(HttpVersion.HTTP_2)
.timeout(CONNECTION_TIMEOUT_SECONDS, TimeUnit.SECONDS);
request.send(listener);
ConnectionStatistics connectionStatistics = httpClient.getBean(ConnectionStatistics.class);
System.out.println(connectionStatistics.getSentBytes()+"/"+ connectionStatistics.getReceivedBytes());
Run Code Online (Sandbox Code Playgroud)
我肯定做错了什么,因为它甚至在全球范围内都不起作用,它总是给出 0。
无论如何,我不知道如何让它根据请求工作。
编辑:
我尝试过@sbordet 回答:
httpClient.newRequest(...)
.onRequestContent((req, buf) -> requestBytes.add(buf.remaining()))
...
.onResponseContent((res, buf) -> responseBytes.add(buf.remaining()))
...
send(...);
Run Code Online (Sandbox Code Playgroud)
它对于响应效果很好。 但是对于请求,我想测量发送的字节数,它总是给出 0 (注意我只有没有内容的获取),而我希望有原始大小(原始 HTTP 请求字节,包括标头大小...)
您可以Request.ContentListener使用以下方法计算请求字节数和响应字节数Response.ContentListener:
httpClient.newRequest(...)
.onRequestContent((req, buf) -> requestBytes.add(buf.remaining()))
...
.onResponseContent((res, buf) -> responseBytes.add(buf.remaining()))
...
send(...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |