10

SimpleHttpConnectionManager 使用不正确。确保始终调用 HttpMethod.releaseConnection() 并且一次只有一个线程和/或方法正在使用此连接管理器。

有谁知道为什么会出现此错误并且是导致我要下载的文件或失败并重试或下载未完成

谢谢 !

4

2 回答 2

16

确保您不使用 SimpleHttpConnectionManager 创建和使用来自多个线程的连接。简单的连接管理器不是为它设计的——它总是返回相同的连接,这不是线程安全的。

在多线程环境中,使用使用连接池的不同管理器。请参阅MultiThreadedHttpConnectionManager

于 2010-06-21T22:31:09.777 回答
10

宁愿不相信这一点,但根据 Eyal Schneider 的回答,在Vincent de Villers 优秀博客中找到有关使用 MultiThreadedHttpConnectionManager 的更多信息。

复制代码片段以防链接消失:

HttpClient httpclient = new HttpClient(new MultiThreadedHttpConnectionManager());
GetMethod httpget = new GetMethod("http://www.myhost.com/");
try {
    httpclient.executeMethod(httpget);
    Reader reader = new InputStreamReader(
        httpget.getResponseBodyAsStream(), httpget.getResponseCharSet());
    // consume the response entity
} finally {
    httpget.releaseConnection();
}
于 2014-11-13T17:06:35.343 回答