package com.ruoyi.mobile.util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.methods.HttpRequestBase;
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.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class HttpClientUtils {
private static PoolingHttpClientConnectionManager connectionManager;
static {
//定义一个连接池的管理类对象
connectionManager = new PoolingHttpClientConnectionManager();
//定义连接池属性
//定义连接池最大的连接数
connectionManager.setMaxTotal(200);
//定义主机的最大的并发数
connectionManager.setDefaultMaxPerRoute(20);
}
//获取closeHttpClient
private static CloseableHttpClient getCloseableHttpClient() {
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connectionManager).build();
return httpClient;
}
//执行请求返回HTML页面
private static String execute(HttpRequestBase httpRequestBase) throws IOException {
httpRequestBase.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
/**
* setConnectionRequestTimeout:设置获取请求的最长时间
*
* setConnectTimeout: 设置创建连接的最长时间
*
* setSocketTimeout: 设置传输超时的最长时间
*/
RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(5000).setConnectTimeout(5000)
.setSocketTimeout(10 * 1000).build();
httpRequestBase.setConfig(config);
CloseableHttpClient httpClient = getCloseableHttpClient();
CloseableHttpResponse response = httpClient.execute(httpRequestBase);
// 请求发送成功,并得到响应
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String html = EntityUtils.toString(response.getEntity(), "UTF-8");
return html;
} else {
return "请求提交失败:" + httpRequestBase.getURI();
}
}
//get请求执行
public static String doGet(String url) throws IOException {
HttpGet httpGet = new HttpGet(url);
String html = execute(httpGet);
return html;
}
//post请求执行
public static String doPost(String url, Map<String, String> param) throws Exception {
HttpPost httpPost = new HttpPost(url);
List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();
for (String key : param.keySet()) {
list.add(new BasicNameValuePair(key, param.get(key)));
}
HttpEntity entity = new UrlEncodedFormEntity(list);
httpPost.setEntity(entity);
return execute(httpPost);
}
}
拷走直接用