`
net_secret
  • 浏览: 24456 次
社区版块
存档分类
最新评论

使用httpclient的异常Httpclient 4.1.2:Invalid use of SingleClientConnManager

阅读更多
Exception in thread “main” java.lang.IllegalStateException: Invalid use of SingleClientConnManager: connection still allocated.
Make sure to release the connection before allocating another one.

只要最后加上EntityUtils.consume(response.getEntity());就可以了!

import java.io.IOException;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ResponseHandler;
import org.apache.http.util.EntityUtils;

public class SimpleResponseHandler implements ResponseHandler<Result> {

private HttpClient httpClient = null;
private String encoding = null;

public SimpleResponseHandler(HttpClient httpClient) {
this.httpClient = httpClient;
}

public Result handleResponse(HttpResponse response) throws IOException {
int statuscode = response.getStatusLine().getStatusCode();
if (isRedirectStatus(statuscode)) {
Header header = response.getFirstHeader("location");
if (header != null) {
String newuri = header.getValue();
if ((newuri == null) || (newuri.equals("")))
newuri = "/";
if (response.getEntity() != null)
EntityUtils.consume(response.getEntity());
return httpClient.doGet(newuri);
}
}
HttpEntity entity = response.getEntity();
if (entity != null) {
Result result = new Result(EntityUtils.toString(entity, encoding));
EntityUtils.consume(entity);
return result;
}
return null;
}

private boolean isRedirectStatus(int statuscode) {
return (statuscode == HttpStatus.SC_MOVED_TEMPORARILY) || (statuscode == HttpStatus.SC_MOVED_PERMANENTLY)
|| (statuscode == HttpStatus.SC_SEE_OTHER) || (statuscode == HttpStatus.SC_TEMPORARY_REDIRECT);
}

}
分享到:
评论

相关推荐

    httpclient4.1.2 jar包

    《HttpClient 4.1.2:Java中的HTTP客户端库详解》 HttpClient是Apache软件基金会的一个开源项目,提供了在Java环境中实现HTTP协议的强大工具。HttpClient 4.1.2是其一个重要的版本,针对HTTP通信提供了丰富的功能和...

    httpclient-4.5.12-API文档-中文版.zip

    赠送jar包:httpclient-4.5.12.jar; 赠送原API文档:httpclient-4.5.12-javadoc.jar; 赠送源代码:httpclient-4.5.12-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.12.pom; 包含翻译后的API文档:...

    httpclient4.1.2.zip

    《HttpClient 4.1.2:Java开发中的HTTP通信利器》 在Java开发中,HttpClient是一个不可或缺的工具库,尤其对于需要进行HTTP通信的应用来说,它提供了强大的功能和灵活的配置选项。HttpClient 4.1.2是Apache ...

    httpclient-4.1.2.jar

    7. **错误处理**:HttpClient提供了详细的异常处理机制,方便开发者捕获和处理各种网络通信中的错误,提高程序的健壮性。 在实际应用中,HttpClient 4.1.2通常通过`DefaultHttpClient`类来创建客户端实例,然后使用...

    httpclient的JAR包4.1.2

    HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

    commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar

    标题中的"commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar"指的是三个关键的Java库文件,它们是Apache HttpClient项目的一部分,用于在Java应用程序中实现HTTP通信。这些JAR(Java ...

    commons-httpclient-3.1jar包

    4. 连接池:使用SingleClientConnManager或MultiThreadedHttpConnectionManager,实现连接的复用,提高性能。 五、常见问题与解决方案 1. 连接超时:可以调整HttpConnectionManager的超时参数,避免请求等待过长。 ...

    httpclient-4.1.2

    《HttpClient 4.1.2:构建高效网络通信的核心库》 HttpClient 4.1.2 是 Apache 组织提供的一款强大的 Java HTTP 客户端库,它为开发者提供了丰富的功能,使得通过 HTTP 协议进行网络通信变得更加简单、高效。这个...

    HttpClient4.1.2中英文文档

    3. **线程安全**:HttpClient设计为线程安全,可以在多线程环境中使用,而无需额外的同步措施。 4. **自定义化**:HttpClient允许用户根据需要定制请求头、实体内容、编码策略等,以满足特定的应用场景。 5. **高...

    httpClient请求

    5. **线程安全**:为了在多线程环境中安全使用,`HttpClientUtils`需要确保其方法是线程安全的,避免并发问题。 而`RestClient`类可能封装了更高级的功能,比如: 1. **构建REST请求**:提供方法来构建带参数的URL...

    httpclient相关的JAR包4.1.2

    标题中的“httpclient相关的JAR包4.1.2”指的是Apache HttpClient库的4.1.2版本。HttpClient是一个在Java环境中实现HTTP协议的开源库,它提供了丰富的API用于执行HTTP请求并处理响应。这个库广泛应用于需要通过HTTP...

    httpclient4.1.2 jar

    3. **异步操作**:HttpClient 4.1.2 引入了异步客户端 API,允许开发者在单独的线程中处理请求和响应,提高并发性能。 4. **Cookie 管理**:内置的 Cookie 管理器可以自动处理服务器返回的 Cookie,维持会话状态。 ...

    httpclient-4.5.13-API文档-中文版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.13.pom; 包含翻译后的API文档:...

    httpclient-4.5jar

    httpclient-4.5所需jar包,里面包含httpclient-4.5.jar等等10个必须的开发包。 1.commons-codec-1.9.jar 2.commons-logging-1.2.jar 3.fluent-hc-4.5.jar 4.httpclient-4.5.jar 5.httpclient-cache-4.5.jar 6....

    可用org.apache.commons.httpclient-3.1.0.jar.zip

    import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....

    使用HttpClient必须的jar包

    8. **SSL/TLS支持**:HttpClient可以配置为使用HTTPS协议,需要`httpmime-x.x.x.jar`(处理MIME类型,如上传文件)和相关SSL库,如`httpclient-cache-x.x.x.jar`(缓存机制)。 9. **错误处理和重试策略**:...

    httpclient-4.5.13-API文档-中英对照版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.13.pom; 包含翻译后的API文档:...

    httpclient-4.5.6-API文档-中文版.zip

    赠送jar包:httpclient-4.5.6.jar; 赠送原API文档:httpclient-4.5.6-javadoc.jar; 赠送源代码:httpclient-4.5.6-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.6.pom; 包含翻译后的API文档:httpclient...

Global site tag (gtag.js) - Google Analytics