| 
					
				 | 
			
			
				@@ -0,0 +1,141 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package cn.com.goldenwater.utils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.com.goldenwater.enums.DataType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson2.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson2.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.BufferedReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.DataOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.InputStreamReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.net.HttpURLConnection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.net.URL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Optional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @description: http请求--该工具类只适用于报表设计-rest接口数据源 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @date: 2021/5/17 21:31 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 注意:本内容仅限购买后使用.禁止私自外泄以及用于其他的商业目的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class HttpRequestUtil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final static Logger LOGGER = LoggerFactory.getLogger(HttpRequestUtil.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 发送请求查询数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param requestUrl    请求路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param requestMethod 请求方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param requestBody   请求体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param requestHeader 请求头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 响应结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @throws IOException 异常 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static String getDataByRequest(String requestUrl, String requestMethod, Map<String, String> requestHeader, String requestBody) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LOGGER.info(">> 访问接口:\n请求地址:{}\n请求方式:{}\n请求头:{}\n请求参数:{}", requestUrl, requestMethod, requestHeader != null ? JSON.toJSON(requestHeader) : "", requestBody); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BufferedReader in = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DataOutputStream out = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ("GET".equalsIgnoreCase(requestMethod) && !StringUtils.isEmpty(requestBody)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Object> bodyMap = JsonUtils.jsonToPojo(requestBody, Map.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            StringBuilder urlSb = new StringBuilder(requestUrl).append("?"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (String key : bodyMap.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                urlSb.append(key).append("=").append(bodyMap.get(key)).append("&"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            urlSb.deleteCharAt(urlSb.length() - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            requestUrl = urlSb.toString().replaceAll(" ", "%20"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpURLConnection conn = getHttpConnection(requestUrl, requestMethod); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!"GET".equalsIgnoreCase(requestMethod) && !StringUtils.isEmpty(requestBody)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                conn.setDoInput(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                conn.setDoOutput(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (requestHeader != null && !requestHeader.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    requestHeader.forEach(conn::setRequestProperty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                out = new DataOutputStream(conn.getOutputStream()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                out.writeBytes(requestBody); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.connect(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            StringBuilder sb = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String temp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            while ((temp = in.readLine()) != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sb.append(temp).append(" "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            result = sb.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LOGGER.info(">> 访问结果:{}", result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (IOException ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LOGGER.error(">> 访问接口失败:{}", ex.getMessage(), ex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (in != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                in.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (out != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                out.flush(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                out.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static JSONObject getRequest(String requestUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getRequest(requestUrl, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static JSONObject getRequest(String requestUrl, Map<String, Object> requestBody) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getJSONObjectByRequest(requestUrl, "GET", null, requestBody != null ? JsonUtils.objectToJson(requestBody) : null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static JSONObject getRequest(String requestUrl, Map<String, String> requestHeader, Map<String, Object> requestBody) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getJSONObjectByRequest(requestUrl, "GET", requestHeader, requestBody != null ? JsonUtils.objectToJson(requestBody) : null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static JSONObject postRequest(String requestUrl, Map<String, Object> requestBody) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, String> requestHeader = new HashMap<>(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        requestHeader.put("Content-Type", "application/json"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getJSONObjectByRequest(requestUrl, "POST", requestHeader, requestBody != null ? JsonUtils.objectToJson(requestBody) : null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static JSONObject getJSONObjectByRequest(String requestUrl, String requestMethod, Map<String, String> requestHeader, String requestBody) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 请求服务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String resStr = HttpRequestUtil.getDataByRequest(requestUrl, requestMethod, requestHeader, requestBody); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 返回结果转换格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return Optional.ofNullable(resStr).map(DataType::getDataByJSON).orElse(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (IOException ignored) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 查询HTTP请求连接 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param requestUrl    请求路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param requestMethod 请求方式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 返回请求连接 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static HttpURLConnection getHttpConnection(String requestUrl, String requestMethod) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpURLConnection conn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            URL uri = new URL(requestUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn = (HttpURLConnection) uri.openConnection(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // requestMethod: POST, PUT, DELETE, GET 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.setRequestMethod(requestMethod); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.setDoOutput(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.setDoInput(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.setConnectTimeout(120000); //60 secs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.setReadTimeout(120000); //60 secs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.setRequestProperty("Accept-Charset", "UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            conn.setRequestProperty("contentType", "UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RuntimeException("connection failed."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return conn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |