记录常用的代码工具(一)--HttpClient

本文记录了在企业开发中广泛使用的HttpClient工具类,通过单例模式实现,支持多种HTTP请求方式,并且在高并发场景下表现优秀。
摘要由CSDN通过智能技术生成

在企业环境中,httpclient基本是http最常用的工具,根据自己的开发经历,整合了一个通用的工具类

包:

<dependency>
	<groupId>commons-httpclient</groupId>
	<artifactId>commons-httpclient</artifactId>
	<version>3.1</version>
</dependency>

工具类:

  • 单例模式
  • 支持多种请求方式
  • 使用并发高的场景
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.ContentBody;
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;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.Map;

/**
 * Created by zhenghaorong on 2020/3/3.
 */
public class HttpUtil {
   

    //Httpclient自带的连接池管理器
    private final static PoolingHttpClientConnectionManager poolConnManager = new PoolingHttpClientConnectionManager();

    private static CloseableHttpClient httpClient;

    static {
      //类加载的时候 设置最大连接数和每个路由的最大连接数
        poolConnManager.setMaxTotal(200);
        poolConnManager.setDefaultMaxPerRoute(100);
    }

    //CloseableHttpClient从线程池里面获取
    private static synchronized CloseableHttpClient getCloseableHttpClient() {
   
        if (httpClient == null) {
   
            httpClient = HttpClients.custom()
                    .setConnectionManager(poolConnManager)
                    .build();
        }
        return httpClient;
    }

    /**
     * get带参请求
     * @param url
     * @param param
     * @p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值