gpt4 book ai didi

java - 如何使用 Jetty Client 根据请求获取 bytesIn/bytesOut

转载 作者:行者123 更新时间:2023-12-05 02:01:23 25 4
gpt4 key购买 nike

我正在使用 Jetty Client 11 并想为每个请求计算发送/接收的字节数。

我正在使用高级 HttpClient。我已阅读此文档,但没有看到有关如何执行此操作的任何信息:

我看到有一种方法可以通过以下方式获取此信息:

        ConnectionStatistics connectionStatistics = new ConnectionStatistics();
httpClient.addBean(connectionStatistics);

然后:

        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());

我一定是做错了什么,因为它甚至在全局范围内都不起作用,它总是给出 0。

无论如何,我不知道如何让它根据请求工作。

编辑:

我试过@sbordet 的回答:

httpClient.newRequest(...)
.onRequestContent((req, buf) -> requestBytes.add(buf.remaining()))
...
.onResponseContent((res, buf) -> responseBytes.add(buf.remaining()))
...
send(...);

并且它可以很好地响应。但是 对于请求,我想测量发送的字节,它总是给出 0(注意我只有没有内容的获取),而我希望有原始大小(原始 HTTP 请求字节包括 header 尺寸……)

最佳答案

您可以使用 Request.ContentListener 计算请求字节数,使用 Response.ContentListener 计算响应字节数:

httpClient.newRequest(...)
.onRequestContent((req, buf) -> requestBytes.add(buf.remaining()))
...
.onResponseContent((res, buf) -> responseBytes.add(buf.remaining()))
...
send(...);

关于java - 如何使用 Jetty Client 根据请求获取 bytesIn/bytesOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66606815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com