管道基础大数据平台系统开发-【后端】-Server
1
sws
2022-11-26 ab849f796bdc17236a95ea5fe5c166fb8f24a75c
src/main/java/com/lf/server/helper/RestHelper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,254 @@
package com.lf.server.helper;
import com.lf.server.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);
        }
    }
    /**
     * Get请求-RestTemplate
     *
     * @param uri Uri地址
     * @return å“åº”字符串
     */
    public static String getForRest(String uri) {
        try {
            RestTemplate rest = getRestTemplate();
            return rest.getForObject(uri, String.class);
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            return getErrorInfo(uri, ex);
        }
    }
    /**
     * Post请求-RestTemplate
     *
     * @param uri      Uri地址
     * @param postData å¾…发送数据
     * @return å“åº”字符串
     */
    public static String postForRest(String uri, List<NameValuePair> postData) {
        try {
            RestTemplate rest = getRestTemplate();
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postData, StaticData.TEXT_ENCODER);
            return rest.postForObject(uri, entity, String.class);
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            return getErrorInfo(uri, ex);
        }
    }
    public static String postForRest(String uri, Map<String, Object> map) {
        try {
            RestTemplate rest = getRestTemplate();
            return rest.postForObject(uri, map, String.class);
        } 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();
    }
}