httpclient4.4的简单demo

public class HttpClientUtil {


    private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class);
    private static PoolingHttpClientConnectionManager connectionManager = null;
    private static HttpClientBuilder clientBuilder = null;
    private static RequestConfig requestConfig = null;
    public static int REQUEST_TIMEOUT = 300;
    public static int CONNECT_TIMEOUT = 300;
    public static int SOCKET_TIMEOUT = 300;
    public static int MAX_CONNECTION = 100;
    public static int MAX_HOST_CONNECTION = 30;
    public static String UTF_8 = "UTF-8";
    public static int READER_SIZE = 8192;

    static {
        requestConfig = RequestConfig.custom().setSocketTimeout(SOCKET_TIMEOUT).setConnectTimeout(CONNECT_TIMEOUT).setConnectionRequestTimeout(REQUEST_TIMEOUT).build();
        connectionManager = new PoolingHttpClientConnectionManager();
        connectionManager.setMaxTotal(MAX_CONNECTION);
        connectionManager.setDefaultMaxPerRoute(MAX_HOST_CONNECTION);
        clientBuilder = HttpClients.custom().setConnectionManagerShared(true);
        clientBuilder.setConnectionManager(connectionManager);
    }

    public static String requestByGetMethod(String s) {
        CloseableHttpClient httpClient = clientBuilder.build();
        StringBuilder entityStringBuilder = null;

        try {
            HttpGet get = new HttpGet(s);
            get.setConfig(requestConfig);
            CloseableHttpResponse httpResponse = httpClient.execute(get);
            InputStreamReader inputStreamReader = null;
            BufferedReader bufferedReader = null;

            try {
                HttpEntity entity = httpResponse.getEntity();
                entityStringBuilder = new StringBuilder();
                if (null != entity) {
                    inputStreamReader = new InputStreamReader(httpResponse.getEntity().getContent(), UTF_8);
                    bufferedReader = new BufferedReader(inputStreamReader, READER_SIZE);
                    String line = null;
                    while ((line = bufferedReader.readLine()) != null) {
                        entityStringBuilder.append(line + "\n");
                    }
                }
            }
            catch (Exception e) {
                logger.error("Request {} Exception {}",s,e);
            }
            finally {
                try {
                    if (inputStreamReader != null) {
                        inputStreamReader.close();
                    }
                }
                catch (Exception e) {
                    logger.error("inputStreamReader close error Request {} Exception {}",s,e);
                }
                try {
                    if (bufferedReader != null) {
                        bufferedReader.close();
                    }
                }
                catch (Exception e) {
                    logger.error("bufferedReader close error Request {} Exception {}",s,e);
                }
                try {
                    if (httpResponse != null) {
                        httpResponse.close();
                    }
                }
                catch (Exception e) {
                    logger.error("httpResponse close error Request {} Exception {}",s,e);
                }
            }
        }
        catch (Exception e) {
            logger.error("Request {} Exception {}",s,e);
        }
        finally {
            try {
                if (httpClient != null) {
                    httpClient.close();
                }
            }
            catch (Exception e) {
                logger.error("httpClient close error Request {} Exception {}",s,e);
            }
        }

        return entityStringBuilder.toString();
    }
}




setConnectionManagerShared()是4.4的新方法,如果不调用该方法的话,connectionManager是不能被共享的,只能执行一次


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值