From 661bb797101109ffa5c1c6cb73763822ca4ce60b Mon Sep 17 00:00:00 2001 From: qaq <1937228092@qq.com> Date: Fri, 20 Jun 2025 11:54:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dui=20=E6=B7=BB=E5=8A=A0gost?= =?UTF-8?q?=E9=9D=99=E9=BB=98http=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 4 +++ panel_install.sh | 5 ++++ .../com/admin/common/utils/HttpUtils.java | 25 ++++--------------- .../com/admin/config/RestTemplateConfig.java | 7 +++++- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/install.sh b/install.sh index 8b92bb3..5c33682 100644 --- a/install.sh +++ b/install.sh @@ -136,3 +136,7 @@ else echo "❌ gost服务启动失败,请执行以下命令查看日志:" echo "journalctl -u gost -f" fi + +# 删除安装脚本自身 +echo "🧹 清理安装脚本..." +rm -f "$0" 2>/dev/null && echo "✨ 安装脚本已自动清理" || echo "⚠️ 安装脚本清理失败,请手动删除" diff --git a/panel_install.sh b/panel_install.sh index 89f1b52..9f3e974 100755 --- a/panel_install.sh +++ b/panel_install.sh @@ -82,3 +82,8 @@ echo "JWT_SECRET=$JWT_SECRET" echo "SERVER_HOST=$SERVER_HOST_PORT" echo "FRONTEND_PORT=$FRONTEND_PORT" echo "BACKEND_PORT=$BACKEND_PORT" + +# 清理安装文件 +echo "🧹 清理安装文件..." +rm -f docker-compose.yml gost.sql 2>/dev/null && echo "✨ 下载文件已清理" || echo "⚠️ 下载文件清理失败" +rm -f "$0" 2>/dev/null && echo "✨ 安装脚本已自动清理" || echo "⚠️ 安装脚本清理失败,请手动删除" diff --git a/springboot-backend/src/main/java/com/admin/common/utils/HttpUtils.java b/springboot-backend/src/main/java/com/admin/common/utils/HttpUtils.java index 2b05dc9..77f65e9 100644 --- a/springboot-backend/src/main/java/com/admin/common/utils/HttpUtils.java +++ b/springboot-backend/src/main/java/com/admin/common/utils/HttpUtils.java @@ -102,34 +102,19 @@ public class HttpUtils implements ApplicationContextAware { } /** - * 自定义错误处理器,不抛出异常但记录错误信息 + * 自定义错误处理器,不抛出异常,允许获取所有状态码的响应 */ private static class NoOpResponseErrorHandler implements ResponseErrorHandler { @Override public boolean hasError(ClientHttpResponse response) throws IOException { - HttpStatus statusCode = response.getStatusCode(); - return statusCode.series() == HttpStatus.Series.CLIENT_ERROR || - statusCode.series() == HttpStatus.Series.SERVER_ERROR; + // 返回 false,让 RestTemplate 不认为任何状态码是错误 + // 这样就可以正常获取 4xx 和 5xx 的响应体 + return false; } @Override public void handleError(ClientHttpResponse response) throws IOException { - HttpStatus statusCode = response.getStatusCode(); - String statusText = response.getStatusText(); - String responseBody = ""; - - try { - // 使用Spring的StreamUtils来读取响应体 - responseBody = new String( - StreamUtils.copyToByteArray(response.getBody()), - StandardCharsets.UTF_8 - ); - } catch (Exception e) { - responseBody = "无法读取响应体: " + e.getMessage(); - } - - logger.error("HTTP请求错误 - 状态码: {} {}, 响应体: {}", - statusCode.value(), statusText, responseBody); + } } diff --git a/springboot-backend/src/main/java/com/admin/config/RestTemplateConfig.java b/springboot-backend/src/main/java/com/admin/config/RestTemplateConfig.java index f27dd08..46f529d 100644 --- a/springboot-backend/src/main/java/com/admin/config/RestTemplateConfig.java +++ b/springboot-backend/src/main/java/com/admin/config/RestTemplateConfig.java @@ -47,11 +47,13 @@ public class RestTemplateConfig { SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier()); HttpClientBuilder httpClientBuilder = HttpClients.custom(); - httpClientBuilder.setSSLSocketFactory(connectionSocketFactory); CloseableHttpClient httpClient = httpClientBuilder.build(); HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setHttpClient(httpClient); + // 添加超时配置 + factory.setConnectTimeout(TIMEOUT_MILLISECONDS); + factory.setReadTimeout(TIMEOUT_MILLISECONDS); return factory; } @@ -67,6 +69,9 @@ public class RestTemplateConfig { CloseableHttpClient httpClient = httpClientBuilder.build(); HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setHttpClient(httpClient); + // 添加超时配置 + factory.setConnectTimeout(TIMEOUT_MILLISECONDS); + factory.setReadTimeout(TIMEOUT_MILLISECONDS); return factory; }