From cf1d82548a1bd8155ffe9b486df8167aa9e63a7d Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 02 七月 2026 09:19:06 +0800
Subject: [PATCH] 功能开发
---
server/services/src/main/java/com/doumee/core/douyin/DouyinClient.java | 54 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/core/douyin/DouyinClient.java b/server/services/src/main/java/com/doumee/core/douyin/DouyinClient.java
index 8f7b418..460e443 100644
--- a/server/services/src/main/java/com/doumee/core/douyin/DouyinClient.java
+++ b/server/services/src/main/java/com/doumee/core/douyin/DouyinClient.java
@@ -27,6 +27,7 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
+import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
@@ -277,15 +278,50 @@
return objectId;
}
try {
- HttpURLConnection conn = (HttpURLConnection) new URL(input).openConnection();
- conn.setInstanceFollowRedirects(true);
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5000);
- conn.setReadTimeout(5000);
- conn.connect();
- String finalUrl = conn.getURL().toString();
- conn.disconnect();
- return extractObjectId(finalUrl);
+ // 鎵嬪姩璺熼殢閲嶅畾鍚�:HttpURLConnection 鑷姩閲嶅畾鍚戜笉璺ㄥ崗璁�(http鈫攈ttps)涓� getURL() 鏇存柊涓嶇ǔ瀹�,
+ // 鏀逛负閫愯烦璇诲彇 Location 澶�,鏈�缁堜粠钀藉湴闀块摼閲屾彁鍙� object_id
+ String current = input;
+ int maxRedirects = 5;
+ for (int i = 0; i < maxRedirects; i++) {
+ HttpURLConnection conn = (HttpURLConnection) new URL(current).openConnection();
+ conn.setInstanceFollowRedirects(false); // 鎵嬪姩璺熼殢
+ conn.setRequestMethod("GET");
+ conn.setRequestProperty("User-Agent", "Mozilla/5.0");
+ conn.setConnectTimeout(5000);
+ conn.setReadTimeout(5000);
+ int code = conn.getResponseCode();
+ String location = conn.getHeaderField("Location");
+ // 蹇呴』璇诲彇骞跺叧闂敊璇�/杈撳叆娴�,鍚﹀垯杩炴帴璧勬簮娉勬紡
+ try (InputStream is = (code >= 400) ? conn.getErrorStream() : conn.getInputStream()) {
+ if (is != null) {
+ // 涓嶉渶瑕佸唴瀹�,浠呮秷璐规祦浠ラ噴鏀捐繛鎺�
+ byte[] buf = new byte[1024];
+ while (is.read(buf) > 0) {
+ // drain
+ }
+ }
+ }
+ if (code == HttpURLConnection.HTTP_MOVED_PERM
+ || code == HttpURLConnection.HTTP_MOVED_TEMP
+ || code == HttpURLConnection.HTTP_SEE_OTHER
+ || code == 307 || code == 308) {
+ if (StringUtils.isBlank(location)) {
+ // 閲嶅畾鍚戜絾鏃� Location,鏃犳硶缁х画
+ return null;
+ }
+ current = location;
+ continue;
+ }
+ // 闈為噸瀹氬悜:鐢ㄦ渶缁� URL 鎻愬彇 object_id
+ String resolved = location != null ? location : conn.getURL().toString();
+ objectId = extractObjectId(resolved);
+ if (objectId == null) {
+ log.warn("瑙f瀽鎶栭煶鐭摼鏈彁鍙栧埌 object_id,input={},final={}", input, resolved);
+ }
+ return objectId;
+ }
+ log.warn("瑙f瀽鎶栭煶鐭摼瓒呰繃鏈�澶ч噸瀹氬悜娆℃暟,input={}", input);
+ return null;
} catch (Exception e) {
log.error("瑙f瀽鎶栭煶鐭摼寮傚父:{}", input, e);
return null;
--
Gitblit v1.9.3