From cc479e6a056785103996cc7ea67dbd5faa3e800e Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 19 十月 2026 18:07:22 +0800
Subject: [PATCH] 数据采集模块
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java | 80 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 78 insertions(+), 2 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
index 90d8d52..1e32df9 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -72,6 +72,8 @@
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+ connection.setConnectTimeout(5000);
+ connection.setReadTimeout(10000);
connection.connect();
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
String line;
@@ -106,10 +108,11 @@
* @param param 璇锋眰鍙傛暟锛岃姹傚弬鏁板簲璇ユ槸 name1=value1&name2=value2 鐨勫舰寮忋��
* @return 鎵�浠h〃杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
*/
- public static String sendPost(String url, String param) {
+ public static Boolean sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
StringBuilder result = new StringBuilder();
+ boolean success = false;
try {
log.info("sendPost - {}", url);
URL realUrl = new URL(url);
@@ -120,6 +123,8 @@
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+ conn.setConnectTimeout(5000);
+ conn.setReadTimeout(10000);
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8));
@@ -131,6 +136,7 @@
result.append(line);
}
log.info("recv - {}", result);
+ success = true;
} catch (ConnectException e) {
log.error("璋冪敤HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
} catch (SocketTimeoutException e) {
@@ -151,7 +157,7 @@
log.error("璋冪敤in.close Exception, url=" + url + ",param=" + param, ex);
}
}
- return result.toString();
+ return success;
}
public static String sendPostByHeaderOld(String url, String param, Map<String, String> headers) {
@@ -167,6 +173,8 @@
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
+ conn.setConnectTimeout(5000);
+ conn.setReadTimeout(10000);
conn.setDoOutput(true);
conn.setDoInput(true);
if (!Objects.isNull(headers)) {
@@ -207,6 +215,23 @@
}
public static String sendPostByHeader(String url, String param, Map<String, String> headers) {
+ // 涓嶈瓒呮椂锛氫笌鍘嗗彶琛屼负涓�鑷达紙鑰佽皟鐢ㄦ柟涓�涓瓧鑺傞兘涓嶅彉锛�
+ return sendPostByHeader(url, param, headers, 0, 0);
+ }
+
+ /**
+ * 甯﹁秴鏃剁殑 POST锛圝SON 鎶ユ枃澶� + 鑷畾涔� header锛夈��
+ * <p>
+ * 鈿狅笍 <b>涓轰粈涔堜細鏈夎繖涓噸杞�</b>锛氫笂闈㈢殑鑰佹柟娉�<b>娌℃湁杩炴帴/璇昏秴鏃�</b>锛�
+ * 涓�鏃﹀绔笉鍝嶅簲锛岃皟鐢ㄧ嚎绋嬩細鏃犻檺鏈熸寕浣忋�傛壒閲忔寜鎮h�呰皟鐢ㄧ殑閲囬泦
+ * 锛堝"鍦ㄩ櫌淇℃伅鍒锋柊"锛屼竴杞嚑鍗冩锛夋壙鍙椾笉璧疯繖涓闄╋紝鎵�浠ヨˉ涓�涓樉寮忚秴鏃剁殑閲嶈浇锛�
+ * 鑰佹柟娉曟敼涓哄鎵樻湰鏂规硶骞朵紶 0锛�0 = 涓嶈瓒呮椂锛夛紝琛屼负涓庢敼閫犲墠瀹屽叏涓�鑷淬��
+ *
+ * @param connectTimeoutMs 杩炴帴瓒呮椂锛堟绉掞級锛泏@code <=0} 琛ㄧず涓嶈
+ * @param readTimeoutMs 璇昏秴鏃讹紙姣锛夛紱{@code <=0} 琛ㄧず涓嶈
+ */
+ public static String sendPostByHeader(String url, String param, Map<String, String> headers,
+ int connectTimeoutMs, int readTimeoutMs) {
StringBuilder result = new StringBuilder();
HttpURLConnection conn = null;
try {
@@ -220,6 +245,12 @@
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
conn.setDoOutput(true);
conn.setDoInput(true);
+ if (connectTimeoutMs > 0) {
+ conn.setConnectTimeout(connectTimeoutMs);
+ }
+ if (readTimeoutMs > 0) {
+ conn.setReadTimeout(readTimeoutMs);
+ }
if (headers != null) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
@@ -332,4 +363,49 @@
return "璋冪敤澶辫触";
}
+ /**
+ * 瀵筓RL鍙傛暟杩涜缂栫爜锛屽鐞嗕腑鏂囦贡鐮侀棶棰�
+ *
+ * @param params 鍙傛暟瀛楃涓诧紝鏍煎紡锛歯ame1=value1&name2=value2
+ * @param charset 缂栫爜鏍煎紡
+ * @return 缂栫爜鍚庣殑鍙傛暟瀛楃涓�
+ */
+ private static String encodeParams(String params, String charset) {
+ if (StringUtils.isBlank(params)) {
+ return params;
+ }
+
+ try {
+ StringBuilder encodedParams = new StringBuilder();
+ String[] pairs = params.split("&");
+
+ for (int i = 0; i < pairs.length; i++) {
+ String pair = pairs[i];
+ if (StringUtils.isNotBlank(pair)) {
+ int idx = pair.indexOf("=");
+ if (idx > 0) {
+ String key = pair.substring(0, idx);
+ String value = pair.substring(idx + 1);
+ // 瀵筴ey鍜寁alue閮借繘琛孶RL缂栫爜
+ encodedParams.append(URLEncoder.encode(key, charset))
+ .append("=")
+ .append(URLEncoder.encode(value, charset));
+ } else {
+ // 娌℃湁绛夊彿锛屾暣涓綔涓簁ey
+ encodedParams.append(URLEncoder.encode(pair, charset));
+ }
+
+ if (i < pairs.length - 1) {
+ encodedParams.append("&");
+ }
+ }
+ }
+
+ return encodedParams.toString();
+ } catch (UnsupportedEncodingException e) {
+ log.error("URL鍙傛暟缂栫爜澶辫触", e);
+ return params;
+ }
+ }
+
}
--
Gitblit v1.9.3