java - 如何在 Commons HttpClient 3.x 中获取当前传输速率

标签 java apache-commons-httpclient

我有一些代码使用 Commons HttpClient 3.1 执行大量 HTTP GET、POST 和 PUT。 .我想在我的 GUI 中提供当前传输速度指示器,但无法找到任何方法来确定正在处理的 HttpMethod 的传输速率。

我可以轻松地为传输计时,并在传输完成后做一些简单的数学运算以确定速度,但这会在长时间上传或下载期间提供糟糕的用户体验。有谁知道如何确定 Commons HttpClient 请求的传输速率它仍在处理中?

最佳答案

我没有广泛使用 HttpClient,所以可能有一个简单的钩子(Hook)。然而,似乎HttpConnection.getResponseInputStream()返回一个简单的 InputStream

要自己添加 Hook ,您需要覆盖 HttpConnectionManagerHttpConnection,以返回跟踪读取的字节数的修饰流。然后你可以启动第二个线程来轮询这个流并显示传输速率,或者(更好)创建一个流,每 N 个字节回调一次(更好,因为你不必关心并发性,你也可以设置 N这样回调只会为大文件调用)。

关于java - 如何在 Commons HttpClient 3.x 中获取当前传输速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1741797/

相关文章:

java - 在 Kotlin 注释参数中使用 java 常量

java - 使用 "server.context-parameters.*"定义的属性在 Java EE 服务器上不起作用

java - 陷入SocketInputStream.socketRead0

java - 在 HttpClientBuilder.build() 中找不到 org.apache.http.conn.ssl.SSLConnectionSocketFactory

ssl - 使用org.apache.commons.httpclient时如何忽略ssl认证?

java - 将代码重构为响应式风格

java - CriteriaQuery 加入字符串值

java - BouncyCaSTLe Java - 解码 DER 编码的 OCTET 字符串

java - 使用 AXIS2 1.4 进行 NTLM v.2 身份验证

java - 相当于 HttpClient 4.x 中的 MultiThreadedHttpConnectionManager.shutdownAll()