diff --git a/pom.xml b/pom.xml
index 0547115..96f1932 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
cn.hutool
hutool-all
- 5.8.26
+ 5.8.47
@@ -63,15 +63,8 @@
- org.apache.httpcomponents
- httpclient
- 4.5.14
-
-
-
- org.apache.httpcomponents
- httpmime
- 4.5.14
+ org.apache.httpcomponents.client5
+ httpclient5
@@ -82,7 +75,7 @@
org.apache.commons
commons-compress
- 1.26.1
+ 1.28.0
@@ -99,7 +92,7 @@
com.github.pengrad
java-telegram-bot-api
- 7.9.1
+ 10.1.0
diff --git a/src/main/java/com/lion/lionwebsite/Service/LocalService.java b/src/main/java/com/lion/lionwebsite/Service/LocalService.java
index 4d12a7e..cb2aa23 100644
--- a/src/main/java/com/lion/lionwebsite/Service/LocalService.java
+++ b/src/main/java/com/lion/lionwebsite/Service/LocalService.java
@@ -9,11 +9,11 @@ import com.lion.lionwebsite.Util.CustomUtil;
import com.lion.lionwebsite.Util.GalleryUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.HttpEntity;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@@ -228,7 +228,7 @@ public class LocalService{
httpResponse = httpClient.execute(httpGet);
HttpEntity responseEntity = httpResponse.getEntity();
- int statusCode = httpResponse.getStatusLine().getStatusCode();
+ int statusCode = httpResponse.getCode();
ArrayList temp = new ArrayList<>();
if (statusCode == 200) {
diff --git a/src/main/java/com/lion/lionwebsite/Service/SubscriptionRefreshService.java b/src/main/java/com/lion/lionwebsite/Service/SubscriptionRefreshService.java
index 1717075..d18f097 100644
--- a/src/main/java/com/lion/lionwebsite/Service/SubscriptionRefreshService.java
+++ b/src/main/java/com/lion/lionwebsite/Service/SubscriptionRefreshService.java
@@ -4,12 +4,13 @@ import com.lion.lionwebsite.Dao.normal.SubMapper;
import com.lion.lionwebsite.Domain.SubscriptionAccount;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.util.Timeout;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -27,8 +28,11 @@ import java.util.concurrent.locks.Lock;
@RequiredArgsConstructor
public class SubscriptionRefreshService {
private static final CloseableHttpClient HTTP_CLIENT = HttpClients.custom()
- .setDefaultRequestConfig(RequestConfig.custom().setConnectTimeout(5_000)
- .setConnectionRequestTimeout(5_000).setSocketTimeout(15_000).build())
+ .setDefaultRequestConfig(RequestConfig.custom()
+ .setConnectTimeout(Timeout.ofMilliseconds(5_000))
+ .setConnectionRequestTimeout(Timeout.ofMilliseconds(5_000))
+ // HttpClient 5 将 socket 读超时改名为 responseTimeout。
+ .setResponseTimeout(Timeout.ofMilliseconds(15_000)).build())
.build();
private static final Pattern MULTIPLIER = Pattern.compile("(\\d+(?:\\.\\d+)?)x\\s*$", Pattern.CASE_INSENSITIVE);
@@ -218,8 +222,8 @@ public class SubscriptionRefreshService {
List download(String url) throws IOException {
HttpGet get = new HttpGet(url);
try (CloseableHttpResponse response = HTTP_CLIENT.execute(get)) {
- if (response.getStatusLine().getStatusCode() != 200)
- throw new IOException("上游 HTTP 状态码 " + response.getStatusLine().getStatusCode());
+ if (response.getCode() != 200)
+ throw new IOException("上游 HTTP 状态码 " + response.getCode());
HttpEntity entity = response.getEntity();
if (entity == null)
throw new IOException("上游返回为空");
diff --git a/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java b/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java
index a456e47..8730eee 100644
--- a/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java
+++ b/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java
@@ -4,18 +4,19 @@ import tools.jackson.databind.JsonNode;
import com.lion.lionwebsite.Domain.Gallery;
import com.lion.lionwebsite.Domain.ImageKeyCache;
import com.lion.lionwebsite.Exception.ResolutionNotMatchException;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.config.RequestConfig;
import java.nio.file.*;
import java.util.concurrent.TimeUnit;
-import org.apache.http.client.entity.EntityBuilder;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.mime.MultipartEntityBuilder;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.entity.EntityBuilder;
+import org.apache.hc.client5.http.entity.mime.MultipartEntityBuilder;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.util.Timeout;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -48,8 +49,11 @@ public class GalleryUtil {
/** Reusable HTTP client —不要每次请求新建 */
private static final CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultRequestConfig(RequestConfig.custom().setConnectTimeout(5_000)
- .setConnectionRequestTimeout(5_000).setSocketTimeout(15_000).build()).build();
+ .setDefaultRequestConfig(RequestConfig.custom()
+ .setConnectTimeout(Timeout.ofMilliseconds(5_000))
+ .setConnectionRequestTimeout(Timeout.ofMilliseconds(5_000))
+ // HttpClient 5 将 socket 读超时改名为 responseTimeout。
+ .setResponseTimeout(Timeout.ofMilliseconds(15_000)).build()).build();
/** E-Hentai Cookie, injected from application.yaml via CustomBean */
private static String ehentaiCookie = "";
@@ -348,7 +352,7 @@ public class GalleryUtil {
}
try (httpResponse) {
HttpEntity responseEntity = httpResponse.getEntity();
- int statusCode = httpResponse.getStatusLine().getStatusCode();
+ int statusCode = httpResponse.getCode();
StringBuilder stringBuilder = new StringBuilder();
if (statusCode == 200 && responseEntity != null) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(responseEntity.getContent()))) {