httpclient 使用连接池管理http请求对象

2019-03-17|来源:

 httpclient 的连接管理对象为HttpClientConnectionManager
初始化HttpClient连接池初始化:
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
通过PoolingHttpClientConnectionManager对象可以设置最大连接数、每个主机地址的并发数等。
通过HttpClients.custom().setConnectionManager(HttpClientConnectionManager cm).build();来创建HttpClient对象


示例:


package com._656463.httpclient;
 
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.HttpClientConnectionManager;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
 
public class HttpConnectManager {
 
    public static void main(String[] args) throws Exception {
        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
        // 设置最大连接数
        cm.setMaxTotal(200);
        // 设置每个主机地址的并发数
        cm.setDefaultMaxPerRoute(20);
 
        doGet(cm);
        doGet(cm);
    }
 
    public static void doGet(HttpClientConnectionManager cm) throws Exception {
        CloseableHttpClient httpClient = HttpClients.custom()
                .setConnectionManager(cm).build();
 
        // 创建http GET请求
        HttpGet httpGet = new HttpGet("http://www.baidu.com/");
 
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpClient.execute(httpGet);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                String content = EntityUtils.toString(response.getEntity(),
                        "UTF-8");
                System.out.println("内容长度:" + content.length());
            }
        } finally {
            if (response != null) {
                response.close();
            }
            // 此处不能关闭httpClient,如果关闭httpClient,连接池也会销毁
            // httpClient.close();
        }
    }
}

本文参考于网络


相关问答

更多

如何使用HttpClient包实现JAVA发起HTTP请求

HttpClient可以发起Http请求. 比如要获取某页面, 那么需要分析, 是POST请求还是GET请求. 分析请求的标题头 ,参数 ,cookie等, 所以 , 分析页面请求, 才是关键, 分析好了, 直接按套路,设置标头, 设置参数, 设置cookie, 然后提交POST/GET就可以了 推荐win10自带的EDGE浏览器, 按F12弹出开发窗口, 里面详细记录了http请求

如何使用httpclient访问网络

使用Apache HttpClient访问网络 package com.szy.news.service; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.en ...

java HttpClient设置代理的话,用户名和密码怎么设置?

使用代理需要导入:commons-logging-1.1.jar,httpclient-4.0-beta2.jar ,httpcore-4.1-alpha1.jar 和 commons-codec-1.4.jar架包。 在连接代理时需要使用用户名和密码构造UsernamePasswordCredentials对象并作为参数传递给HttpClient对象。 具体用法如下: public static void main(String args[]) { StringBuffer sb = new S ...

java 模拟登录问题,使用httpclient

需要先判断一下是否登陆成功,只要登陆成功client对象就应该得到cookie了,你就可以用这个client对象直接请求你需要的页面。如果不用状态码判断登陆成功,状态码可能就没什么用了。

spring怎么管理apache的httpclient连接

这个和spring无关,数据库连接池也是使用如dbcp、c3p0、proxool、druid等 Xml代码 ConnectionManager" class="org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager" destroy-method="shutdown"> utf8"> 那个MyHttpParameters类, Java代码 public class MyHttpParameters extends BasicHttpP ...

httpclient 教程

相关文章

更多

最近更新

更多