This commit is contained in:
Leo
2026-01-15 21:03:42 +08:00
parent ff9ab96833
commit 4379277a08
2 changed files with 72 additions and 25 deletions

View File

@@ -30,10 +30,16 @@ public class WPS365ApiServiceImpl implements IWPS365ApiService {
public JSONObject getUserInfo(String accessToken) { public JSONObject getUserInfo(String accessToken) {
try { try {
// WPS365用户信息API: GET /api/v1/user/info // WPS365用户信息API: GET /api/v1/user/info
// 注意如果此API不存在或需要不同的路径请查看WPS365官方文档
String url = wps365Config.getApiBaseUrl() + "/user/info"; String url = wps365Config.getApiBaseUrl() + "/user/info";
return WPS365ApiUtil.httpRequest("GET", url, accessToken, null); log.debug("调用用户信息API: {}", url);
JSONObject result = WPS365ApiUtil.httpRequest("GET", url, accessToken, null);
log.debug("用户信息API响应: {}", result);
return result;
} catch (Exception e) { } catch (Exception e) {
log.error("获取用户信息失败", e); log.error("获取用户信息失败 - url: {}, error: {}",
wps365Config.getApiBaseUrl() + "/user/info", e.getMessage(), e);
// 不抛出异常,让调用方处理(使用降级方案)
throw new RuntimeException("获取用户信息失败: " + e.getMessage(), e); throw new RuntimeException("获取用户信息失败: " + e.getMessage(), e);
} }
} }

View File

@@ -6,6 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
@@ -140,19 +141,39 @@ public class WPS365ApiUtil {
// 读取响应 // 读取响应
int statusCode = conn.getResponseCode(); int statusCode = conn.getResponseCode();
BufferedReader reader;
if (statusCode >= 200 && statusCode < 300) {
reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
} else {
reader = new BufferedReader(new InputStreamReader(conn.getErrorStream(), StandardCharsets.UTF_8));
}
StringBuilder response = new StringBuilder(); StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) { try {
response.append(line); BufferedReader reader;
InputStream inputStream;
if (statusCode >= 200 && statusCode < 300) {
inputStream = conn.getInputStream();
} else {
// 对于错误响应,尝试读取错误流
inputStream = conn.getErrorStream();
// 如果错误流为null尝试读取正常流某些服务器可能将错误信息放在正常流中
if (inputStream == null) {
inputStream = conn.getInputStream();
}
}
// 如果输入流仍然为null说明无法读取响应
if (inputStream == null) {
log.warn("无法读取HTTP响应流状态码: {}", statusCode);
response.append("无法读取响应内容");
} else {
reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
}
} catch (Exception e) {
log.error("读取HTTP响应失败", e);
response.append("读取响应失败: ").append(e.getMessage());
} }
reader.close();
String responseStr = response.toString(); String responseStr = response.toString();
log.info("刷新访问令牌响应: statusCode={}, response={}", statusCode, responseStr); log.info("刷新访问令牌响应: statusCode={}, response={}", statusCode, responseStr);
@@ -205,25 +226,45 @@ public class WPS365ApiUtil {
// 读取响应 // 读取响应
int statusCode = conn.getResponseCode(); int statusCode = conn.getResponseCode();
BufferedReader reader;
if (statusCode >= 200 && statusCode < 300) {
reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
} else {
reader = new BufferedReader(new InputStreamReader(conn.getErrorStream(), StandardCharsets.UTF_8));
}
StringBuilder response = new StringBuilder(); StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) { try {
response.append(line); BufferedReader reader;
InputStream inputStream;
if (statusCode >= 200 && statusCode < 300) {
inputStream = conn.getInputStream();
} else {
// 对于错误响应,尝试读取错误流
inputStream = conn.getErrorStream();
// 如果错误流为null尝试读取正常流某些服务器可能将错误信息放在正常流中
if (inputStream == null) {
inputStream = conn.getInputStream();
}
}
// 如果输入流仍然为null说明无法读取响应
if (inputStream == null) {
log.warn("无法读取HTTP响应流状态码: {}", statusCode);
response.append("无法读取响应内容");
} else {
reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
}
} catch (Exception e) {
log.error("读取HTTP响应失败", e);
response.append("读取响应失败: ").append(e.getMessage());
} }
reader.close();
String responseStr = response.toString(); String responseStr = response.toString();
log.debug("HTTP响应: statusCode={}, response={}", statusCode, responseStr); log.debug("HTTP响应: statusCode={}, response={}", statusCode, responseStr);
if (statusCode < 200 || statusCode >= 300) { if (statusCode < 200 || statusCode >= 300) {
throw new RuntimeException("HTTP请求失败: " + statusCode + ", response=" + responseStr); throw new RuntimeException("HTTP请求失败: statusCode=" + statusCode + ", response=" + responseStr);
} }
if (responseStr == null || responseStr.trim().isEmpty()) { if (responseStr == null || responseStr.trim().isEmpty()) {