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<NameValuePair> 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<String, Object> 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> T getForRest(String uri, Class<T> clazz) {
|
RestTemplate rest = getRestTemplate();
|
|
return rest.getForObject(uri, clazz);
|
}
|
|
/**
|
* POST请求(REST)
|
*/
|
public static String postForRest(String uri, Map<String, Object> map) {
|
RestTemplate rest = getRestTemplate();
|
|
return rest.postForObject(uri, map, String.class);
|
}
|
|
/**
|
* POST请求(REST)
|
*/
|
public static <T> String postForRest(String uri, List<T> list) {
|
RestTemplate rest = getRestTemplate();
|
|
return rest.postForObject(uri, list, String.class);
|
}
|
|
/**
|
* POST请求(REST)
|
*/
|
public static <T> 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);
|
}
|
}
|