packagedemo;importjava.io.IOException;importjava.util.Map;importjava.util.Set;importorg.apache.http.HttpEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.client.methods.HttpRequestBase;importorg.apache.http.entity.StringEntity;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.protocol.HTTP;importorg.apache.http.util.EntityUtils;public classHttpClient {public static final String DEFAULT_CHARSET = "UTF-8";public static final String JSON_CONTENT_FORM = "application/json;charset=UTF-8";public static final String CONTENT_FORM = "application/x-www-form-urlencoded;charset=UTF-8";public static String doService(String url, HttpParamers paramers, HttpHeader header, int connectTimeout, int readTimeout) throwsException {
HttpMethod httpMethod=paramers.getHttpMethod();switch(httpMethod) {caseGET:returndoGet(url, paramers, header, connectTimeout, readTimeout);casePOST:returndoPost(url, paramers, header, connectTimeout, readTimeout);
}return null;
}/*** post方法
*@paramurl
*@paramparamers
*@paramheader
*@paramconnectTimeout
*@paramreadTimeout
*@return*@throwsIOException*/
public static String doPost(String url, HttpParamers paramers, HttpHeader header, int connectTimeout, int readTimeout) throwsIOException {
String responseData= "";
CloseableHttpClient httpClient= null;
CloseableHttpResponse httpResponse= null;try{
String query= null;
HttpPost httpPost= newHttpPost(url);
setHeader(httpPost, header);if(paramers.isJson()) {//json数据
httpPost.setHeader(HTTP.CONTENT_TYPE, JSON_CONTENT_FORM);
query=paramers.getJsonParamer();
}else{//表单数据
httpPost.setHeader(HTTP.CONTENT_TYPE, CONTENT_FORM);
query=paramers.getQueryString(DEFAULT_CHARSET);
}if(query != null){
HttpEntity reqEntity= newStringEntity(query);
httpPost.setEntity(reqEntity);
}
httpClient=HttpClients.createDefault();
httpResponse=httpClient.execute(httpPost);
HttpEntity resEntity=httpResponse.getEntity();
responseData=EntityUtils.toString(resEntity);
}catch(Exception e){
e.printStackTrace();
}finally{
httpResponse.close();
httpClient.close();
}returnresponseData;
}/*** get方法
*@paramurl
*@paramparams
*@paramheader
*@paramconnectTimeout
*@paramreadTimeout
*@return*@throwsIOException*/
public static String doGet(String url, HttpParamers params, HttpHeader header, int connectTimeout, int readTimeout) throwsIOException {
String responseData= "";
CloseableHttpClient httpClient= null;
CloseableHttpResponse httpResponse= null;try{
String query=params.getQueryString(DEFAULT_CHARSET);
url=buildGetUrl(url, query);
HttpGet httpGet= newHttpGet(url);
setHeader(httpGet, header);
httpClient=HttpClients.createDefault();
httpResponse=httpClient.execute(httpGet);
HttpEntity resEntity=httpResponse.getEntity();
responseData=EntityUtils.toString(resEntity);
}catch(Exception e){
e.printStackTrace();
}finally{
httpResponse.close();
httpClient.close();
}returnresponseData;
}private static voidsetHeader(HttpRequestBase httpRequestBase, HttpHeader header){if(header != null){
Map headerMap =header.getParams();if (headerMap != null && !headerMap.isEmpty()) {
Set> entries =headerMap.entrySet();for (Map.Entryentry : entries) {
String name=entry.getKey();
String value=entry.getValue();
httpRequestBase.setHeader(name, value);
}
}
}
}private static String buildGetUrl(String url, String query) throwsIOException {if (query == null || query.equals("")) {returnurl;
}
StringBuilder newUrl= newStringBuilder(url);boolean hasQuery = url.contains("?");boolean hasPrepend = (url.endsWith("?")) || (url.endsWith("&"));if (!hasPrepend) {if(hasQuery) {
newUrl.append("&");
}else{
newUrl.append("?");
hasQuery= true;
}
}
newUrl.append(query);
hasPrepend= false;returnnewUrl.toString();
}
}