import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; 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.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * <b>Http工具</b><br> * * @author hunk * @date 2018年4月16日 * @Copyright * * <pre> * =================Modify Record================= * Modifier date Content * hunk 2018年4月16日 新增 * * </pre> */ public class ClientHttpUtils { public static String CUST_PAY_INFO_PUSH_URL = ""; public static String sendPOST(String POST_URL, Map<String, String> urlParam, String body) { //日志 CloseableHttpResponse response = null; try { RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(6000).setConnectTimeout(6000) .setConnectionRequestTimeout(6000).build(); CloseableHttpClient httpclient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build(); // HttpPost httpPost = new HttpPost(POST_URL); StringBuilder param = new StringBuilder(""); // 将要拼接的参数urlencode for (String key : urlParam.keySet()) { param.append(key + "=" + URLEncoder.encode(urlParam.get(key), "UTF-8") + "&"); } // pingjie HttpPost httpPost = new HttpPost(POST_URL + param.toString()); // 请求参数设置 if (StringUtils.isNotEmpty(body)) { StringEntity entity = new StringEntity(body, ContentType.APPLICATION_JSON); httpPost.setEntity(entity); } response = httpclient.execute(httpPost); HttpEntity entity = response.getEntity(); return EntityUtils.toString(entity, "UTF-8"); } catch (UnsupportedEncodingException e) { // logger.error(e.getMessage(), e); } catch (ClientProtocolException e) { // logger.error(e.getMessage(), e); } catch (IOException e) { // logger.error(e.getMessage(), e); } catch (Exception e) { System.out.println(e); } finally { if (response != null) { try { response.close(); } catch (IOException e) { // logger.error(e.getMessage(), e); } } } return null; } public static byte[] sendPost(String url,Map<String,String> map) throws UnsupportedEncodingException{ CloseableHttpClient httpClient = HttpClients.createDefault(); List<NameValuePair> requestParams = new ArrayList<NameValuePair>(); for (Map.Entry<String, String> entry : map.entrySet()) { requestParams.add(new BasicNameValuePair(entry.getKey(),entry.getValue())); } HttpEntity reqEntity = new UrlEncodedFormEntity(requestParams,"utf-8"); RequestConfig config = RequestConfig.custom().setConnectTimeout(20000) .setSocketTimeout(20000).setConnectionRequestTimeout(20000) .build(); HttpPost post = new HttpPost(url); post.setEntity(reqEntity); post.setConfig(config); CloseableHttpResponse response = null; try { response = httpClient.execute(post); // logger().info(response); if(response.getStatusLine().getStatusCode() == 200){ // logger().info("服务端响应成功,200,OK!"); HttpEntity resEntity = response.getEntity(); byte[] resultByte = EntityUtils.toByteArray(resEntity); // String message = EntityUtils.toString(resEntity,"utf-8"); return resultByte; }else{ // logger().error("服务端返回异常,响应码:"+response.getStatusLine().getStatusCode()); return null; } } catch (IOException e) { // logger().error(e.getMessage(), e); e.printStackTrace(); // logger().error("IO异常:"+e.getMessage()); return null; }finally{ if(httpClient != null){ try { httpClient.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(response != null){ try { response.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static String sendJsonPost(String url,String json) throws UnsupportedEncodingException{ CloseableHttpClient httpClient = HttpClients.createDefault(); // List<NameValuePair> requestParams = new ArrayList<NameValuePair>(); /* for (Map.Entry<String, String> entry : map.entrySet()) { requestParams.add(new BasicNameValuePair(entry.getKey(),entry.getValue())); }*/ // HttpEntity reqEntity = new UrlEncodedFormEntity(requestParams,"utf-8"); StringEntity reqEntity = new StringEntity(json, Charset.forName("UTF-8")); reqEntity.setContentType("text/json"); RequestConfig config = RequestConfig.custom().setConnectTimeout(60000) .setSocketTimeout(60000).setConnectionRequestTimeout(60000) .build(); HttpPost post = new HttpPost(url); post.setEntity(reqEntity); post.setConfig(config); post.setHeader("Content-Type", "application/json;charset=UTF-8"); CloseableHttpResponse response = null; try { response = httpClient.execute(post); if(response.getStatusLine().getStatusCode() == 200){ // logger().info("服务端响应成功,200,OK!"); HttpEntity resEntity = response.getEntity(); // byte[] resultByte = EntityUtils.toByteArray(resEntity); String message = EntityUtils.toString(resEntity,"utf-8"); return message; }else{ // logger().error("服务端返回异常,响应码:"+response.getStatusLine().getStatusCode()); return null; } } catch (IOException e) { // logger().error(e.getMessage(), e); e.printStackTrace(); // logger().error("IO异常:"+e.getMessage()); return null; }finally{ if(httpClient != null){ try { httpClient.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(response != null){ try { response.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static String sendJsonPostForYcej(String json) throws UnsupportedEncodingException{ return sendJsonPost(CUST_PAY_INFO_PUSH_URL,json); } }