我有一些代码使用 Commons HttpClient 3.1 执行大量 HTTP GET、POST 和 PUT。 .我想在我的 GUI 中提供当前传输速度指示器,但无法找到任何方法来确定正在处理的 HttpMethod 的传输速率。
我可以轻松地为传输计时,并在传输完成后做一些简单的数学运算以确定速度,但这会在长时间上传或下载期间提供糟糕的用户体验。有谁知道如何确定 Commons HttpClient 请求的传输速率而它仍在处理中?
最佳答案
我没有广泛使用 HttpClient,所以可能有一个简单的钩子(Hook)。然而,似乎HttpConnection.getResponseInputStream()返回一个简单的 InputStream
。
要自己添加 Hook ,您需要覆盖 HttpConnectionManager
和 HttpConnection
,以返回跟踪读取的字节数的修饰流。然后你可以启动第二个线程来轮询这个流并显示传输速率,或者(更好)创建一个流,每 N 个字节回调一次(更好,因为你不必关心并发性,你也可以设置 N这样回调只会为大文件调用)。
关于java - 如何在 Commons HttpClient 3.x 中获取当前传输速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1741797/