package com.terra.system.helper; import com.terra.common.entity.all.StaticData; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpEntity; 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.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.springframework.web.client.RestTemplate; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * Rest服务帮助类 * @author WWW */ public class RestHelper { private static RestTemplate restTemplate; private final static Log log = LogFactory.getLog(RestHelper.class); /** * 获取RestTemplate * * @return RestTemplate */ public static RestTemplate getRestTemplate() { if (restTemplate == null) { restTemplate = SpringContextHelper.getBean(RestTemplate.class); } return restTemplate; } /** * Get请求-HttpURLConnection * * @param url URL地址 * @return 字符串 * @throws IOException IO异常 */ public static String getForConn(String url) throws IOException { BufferedReader br = null; HttpURLConnection conn = null; try { URL restUrl = new URL(url); conn = (HttpURLConnection) restUrl.openConnection(); // POST,GET,PUT,DELETE conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "application/json"); br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { sb.append(line); } return sb.toString(); } finally { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } } /** * Post请求-HttpURLConnection * * @param url URL地址 * @param query 查询条件 * @return 字符串 * @throws IOException IO异常 */ public static String postForConn(String url, String query) throws IOException { BufferedReader br = null; HttpURLConnection conn = null; try { URL restUrl = new URL(url); conn = (HttpURLConnection) restUrl.openConnection(); // POST,GET,PUT,DELETE conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setDoOutput(true); PrintStream ps = new PrintStream(conn.getOutputStream()); ps.print(query); ps.close(); // OutputStream out = conn.getOutputStream() // out.write(query.getBytes()) // out.close() br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { sb.append(line); } return sb.toString(); } finally { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } } /** * Get请求-CloseableHttpClient * * @param uri Uri地址 * @return 响应字符串 */ public static String get(String uri) { try { CloseableHttpClient httpClient = HttpClients.custom().build(); HttpGet httpGet = new HttpGet(uri); CloseableHttpResponse closeResponse = httpClient.execute(httpGet); // 取出返回体 HttpEntity entity = closeResponse.getEntity(); return EntityUtils.toString(entity, StaticData.TEXT_ENCODER); } catch (Exception ex) { log.error(ex.getMessage(), ex); return getErrorInfo(uri, ex); } } /** * Post请求-CloseableHttpClient * * @param uri Uri地址 * @param postData 待发送数据 * @return 响应字符串 */ public static String post(String uri, List postData) { try { CloseableHttpClient httpClient = HttpClients.custom().build(); UrlEncodedFormEntity postEntity = new UrlEncodedFormEntity(postData, StaticData.TEXT_ENCODER); HttpPost httpPost = new HttpPost(uri); httpPost.setEntity(postEntity); CloseableHttpResponse closeResponse = httpClient.execute(httpPost); // 取出返回体 HttpEntity entity = closeResponse.getEntity(); return EntityUtils.toString(entity, StaticData.TEXT_ENCODER); } catch (Exception ex) { log.error(ex.getMessage(), ex); return getErrorInfo(uri, ex); } } /** * 获取错误信息 * * @param uri Uri地址 * @param ex 异常 * @return 错误信息 */ public static String getErrorInfo(String uri, Exception ex) { Map map = new LinkedHashMap<>(); map.put("result", null); map.put("message", ex.getMessage()); map.put("code", 400); map.put("uri", uri); //map.put("tag", StaticData.CACHE_PREFIX) return map.toString(); } /** * GET请求(REST) */ public static String getForRest(String uri) { RestTemplate rest = getRestTemplate(); return rest.getForObject(uri, String.class); } /** * GET请求(REST) */ public static T getForRest(String uri, Class clazz) { RestTemplate rest = getRestTemplate(); return rest.getForObject(uri, clazz); } /** * POST请求(REST) */ public static String postForRest(String uri, Map map) { RestTemplate rest = getRestTemplate(); return rest.postForObject(uri, map, String.class); } /** * POST请求(REST) */ public static String postForRest(String uri, List list) { RestTemplate rest = getRestTemplate(); return rest.postForObject(uri, list, String.class); } /** * POST请求(REST) */ public static String postForRest(String uri, T t) { RestTemplate rest = getRestTemplate(); return rest.postForObject(uri, t, String.class); } /** * DELETE请求(REST) */ public static void deleteForRest(String uri) { RestTemplate rest = getRestTemplate(); rest.delete(uri); } }