package net.lab1024.smartadmin.util; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; 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.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; /** * [ HttpUtils ] * * @author yandanyang * @version 1.0 * @company 1024lab.net * @copyright (c) 2019 1024lab.netInc. All rights reserved. * @date * @since JDK1.8 */ public class SmartHttpUtil { public static String sendGet(String url, Map params, Map header) throws Exception { HttpGet httpGet = null; String body = ""; CloseableHttpClient httpClient = null; CloseableHttpResponse response = null; try { httpClient = HttpClients.createDefault(); List mapList = new ArrayList<>(); if (params != null) { for (Entry entry : params.entrySet()) { mapList.add(entry.getKey() + "=" + entry.getValue()); } } if (CollectionUtils.isNotEmpty(mapList)) { url = url + "?"; String paramsStr = StringUtils.join(mapList, "&"); url = url + paramsStr; } httpGet = new HttpGet(url); httpGet.setHeader("Content-type", "application/json; charset=utf-8"); httpGet.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); if (header != null) { for (Entry entry : header.entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } } response = httpClient.execute(httpGet); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { throw new RuntimeException("请求失败"); } else { body = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception e) { throw e; } finally { if (httpGet != null) { httpGet.releaseConnection(); } if (response != null) { response.close(); } } return body; } public static String sendPostJson(String url, String json, Map header) throws Exception { HttpPost httpPost = null; String body = ""; try { CloseableHttpClient httpClient = HttpClients.createDefault(); httpPost = new HttpPost(url); httpPost.setHeader("Content-type", "application/json; charset=utf-8"); httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); if (header != null) { for (Entry entry : header.entrySet()) { httpPost.setHeader(entry.getKey(), entry.getValue()); } } StringEntity entity = new StringEntity(json, Charset.forName("UTF-8")); entity.setContentEncoding("UTF-8"); entity.setContentType("application/json"); httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { throw new RuntimeException("请求失败"); } else { body = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception e) { throw e; } finally { if (httpPost != null) { httpPost.releaseConnection(); } } return body; } public static String sendPostForm(String url, Map params, Map header) throws Exception { HttpPost httpPost = null; String body = ""; try { CloseableHttpClient httpClient = HttpClients.createDefault(); httpPost = new HttpPost(url); httpPost.setHeader("Content-type", "application/x-www-form-urlencoded"); httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); if (header != null) { for (Entry entry : header.entrySet()) { httpPost.setHeader(entry.getKey(), entry.getValue()); } } List nvps = new ArrayList<>(); if (params != null) { for (Entry entry : params.entrySet()) { nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } } //设置参数到请求对象中 httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8")); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { throw new RuntimeException("请求失败"); } else { body = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception e) { throw e; } finally { if (httpPost != null) { httpPost.releaseConnection(); } } return body; } }