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()))) {