在企业环境中,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