SimpleHttpConnectionManager使用不正确。确保始终调用HttpMethod.releaseConnection(),并且一次只有一个线程和/或方法使用此连接管理器。
有没有人知道为什么会出现此错误并导致我要下载的文件或失败并重试或下载未完成的文件
谢谢!
答案 0 :(得分:12)
确保不使用SimpleHttpConnectionManager来创建和使用来自多个线程的连接。简单的连接管理器不是为它设计的 - 它总是返回相同的连接,这不是线程安全的。
在多线程环境中,使用使用连接池的其他管理器。请参阅MultiThreadedHttpConnectionManager。
答案 1 :(得分:5)
对此不感兴趣,但根据Eyal Schneider的回答,找到有关在Vincent de Villers excellent blog中使用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();
}