我有一些代码,不一堆HTTP得到,员额,并把使用 下议院的异常3.1.我想提供一个流传速度指标在我GUI,但是无法找到任何方法对于确定转速率的HttpMethod正在处理中。

我可以很容易地仅仅是时间的转移,并做一些简单的数学后完成确定什么样的速度,但这提供了一个坏的用户体验过一个长长的上传或下载。任何人都不会知道如何确定转速率的下议院的异常的要求 同时 它仍然是正在处理?

有帮助吗?

解决方案

我没有用异常广泛,所以有可能是一个简单挂钩。然而,它的出现, HttpConnection.getResponseInputStream() 返回一个简单的 InputStream.

添加钩自己,你会需要复盖 HttpConnectionManagerHttpConnection, 回一个装饰流,跟踪的数字阅读。然后您可以自旋向上的第二线民意调查这一流和显示器传送速率,或者(更佳)创建流带回调每N字节(更好的因为你没有关心并发,并且还可以设置N这样的回仅仅是援引大型文件)。

其他提示

简单钩会延长HttpEntityWrapper并重写getContent()方法:

public InputStream getContent() throws IOException {
    InputStream wrappedin = wrappedEntity.getContent();
    return new MyTransferRateInputStream(wrappedin);
}

以后可以添加此作为响应拦截

httpClient.addResponseInterceptor(HttpResponseInterceptor itcp)

这样,你不需要重写提到HttpConnectionManagerHttpConnection

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top