HttpClientUtilImpl.java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;
import org.omg.CORBA.portable.UnknownException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
public class HttpClientUtilImpl{
HttpClient httpClient=null;
// public static String cookie="";
protected HttpClientUtilImpl(){
httpClient= HttpConnection.getHttpClient();
}
protected HttpResponse executeGet(String url,Object paramObj) {
JSONObject paramJsonObject=JSON.parseObject(JSON.toJSONString(paramObj));
HttpResponse httpResponse= null;
try {
httpResponse = perform(getMethod(url,paramJsonObject));
} catch (Exception e) {
e.printStackTrace();
}
return httpResponse;
}
protected HttpGet getMethod(String url, Map<String, Object> paraMap) {
Map object=(Map) paraMap.get("paramMap");
String newurl = assambleUrl(url,"utf-8",object);
HttpGet httpget = new HttpGet(newurl);
// httpget.setHeader("Cookie", cookie);
httpget.setHeader("site","pc");
return httpget;
}
protected String assambleUrl(String baseUrl, String encoding, Map<String, Object> params) {
if (params == null || params.isEmpty()) {
return baseUrl;
}
StringBuilder sb = new StringBuilder(baseUrl);
if (!baseUrl.endsWith("?") && !baseUrl.contains("&")) {
sb.append("?");
} else if (baseUrl.contains("&")) {
sb.append("&");
}
for (String key : params.keySet()) {
try {
sb.append(key).append("=").append(URLEncoder.encode(String.valueOf(params.get(key)), encoding))
.append("&");
} catch (UnsupportedEncodingException e) {
throw new UnknownException(e);
}
}
return sb.deleteCharAt(sb.length() - 1).toString();
}
protected <T>HttpResponse executePost(String url, T paramObj ,String site) {
HttpResponse httpResponse= null;
try {
httpResponse = perform(postMethod(url,paramObj,site));
} catch (Exception e) {
e.printStackTrace();
}
return httpResponse;
}
protected <T> HttpPost postMethod(String url, T paramObj,String site) {
String jsonStr="{}";
//判断是不是String类型,不是就转成string
if (paramObj instanceof String){
jsonStr=(String)paramObj;
}else {
jsonStr= JSON.toJSONString(paramObj);
}
//返回 HttpPost对象
return postJson(url,jsonStr,site);
}
public HttpPost postJson(String url, String jsonPara ,String site){
//String token = this.getMaitixToken();
HttpPost jsonPost = new HttpPost(url);
StringEntity stringEntity = new StringEntity(jsonPara, Charset.forName("utf-8"));
jsonPost.setEntity(stringEntity);
jsonPost.setHeader("Content-type", "application/json;charset=UTF-8");
jsonPost.setHeader("Accept", "application/json");
//jsonPost.setHeader("X-XSRF-TOKEN",token);
return jsonPost;
}
// protected HttpPost postJson1(String url, String Jsonparam ,String site) {
// //创建httppost请求
// HttpPost httpPost=new HttpPost(url);
httpPost.setHeader("Cookie", cookie);//解决post请求302重定向问题
// //解决乱码
// StringEntity stringEntity = null;
// try {
// stringEntity = new StringEntity(Jsonparam,"utf-8");
// } catch (Exception e) {
// e.printStackTrace();
// }
// //设置参数
// httpPost.setEntity(stringEntity);
// //设置数据格式
// httpPost.setHeader("Content-type", "application/json;charset=utf-8");
// httpPost.setHeader("Accept", "application/json");
// //httpPost.setHeader("Accept-Encoding","gzip, deflate");
// httpPost.setHeader("site",site);
// return httpPost;
// }
protected HttpResponse perform(HttpUriRequest httpUriRequest) {
HttpResponse httpResponse= null;
try {
httpResponse = httpClient.execute(httpUriRequest);
} catch (IOException e) {
e.printStackTrace();
}
return httpResponse;
}
protected JSONObject getJsonObjectResult(HttpResponse httpResponse){
HttpEntity httpEntity=httpResponse.getEntity();
String result= null;
try {
result = EntityUtils.toString(httpEntity,"utf-8");
} catch (IOException e) {
e.printStackTrace();
}
JSONObject res= JSON.parseObject(result);
return res;
}
}
HttpConnection.java
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.params.ConnPerRouteBean;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
public class HttpConnection {
private static HttpParams httpParams= new BasicHttpParams();;
private static ClientConnectionManager connectionManager;
/**
* 最大连接数
*/
protected final static int MAX_TOTAL_CONNECTIONS = 800;
/**
* 获取连接的最大等待时间
*/
protected final static int WAIT_TIMEOUT = 60000;
/**
* 每个路由最大连接数
*/
protected final static int MAX_ROUTE_CONNECTIONS = 400;
/**
* 连接超时时间
*/
protected final static int CONNECT_TIMEOUT = 100 * 60 * 10;
/**
* 读取超时时间
*/
protected final static int READ_TIMEOUT = 100 * 60 * 10;
static {
ConnManagerParams.setMaxTotalConnections(httpParams, 800);
ConnManagerParams.setTimeout(httpParams, 60000L);
ConnPerRouteBean connPerRoute = new ConnPerRouteBean(400);
ConnManagerParams.setMaxConnectionsPerRoute(httpParams, connPerRoute);
HttpConnectionParams.setConnectionTimeout(httpParams, 60000);
HttpConnectionParams.setSoTimeout(httpParams, 60000);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
connectionManager = new ThreadSafeClientConnManager(httpParams, registry);
}
protected static HttpClient getHttpClient() {
return new DefaultHttpClient(connectionManager, httpParams);
}
}
使用:
public class test extends HttpClientUtilImpl {
private String domain="http://XXX.XXX.com/XXX";
public JSONObject postTest( ){
String url="/api/XXX/XXX";
String str="{\"name\":\"test\"}";
JSONObject param=new JSONObject();
System.out.println("调用接口参数:"+JSON.toJSONString(param));
HttpResponse httpResponse=super.executePost(domain+url,param,"pc");
JSONObject jsonObject=super.getJsonObjectResult(httpResponse);
return jsonObject;
}
public JSONObject getTest( ){
String url="/api/XXX/XXX";
Map<String,Object> map=new HashMap<String,Object>();
JSONObject param=new JSONObject();
param.put("userId","1");
map.put("paramMap",param);
System.out.println("调用接口参数:"+JSON.toJSONString(param));
HttpResponse httpResponse=super.executeGet(domain+url,map);;
JSONObject jsonObject=super.getJsonObjectResult(httpResponse);
return jsonObject;
}
}