gpt4 book ai didi

java - java.net.http.HttpClient 需要关闭吗?

转载 作者:行者123 更新时间:2023-11-30 12:05:14 26 4
gpt4 key购买 nike

我正在使用新的 java.net.http.HttpClient 并且在调用它大约 378026 次后从我的测试中,我开始得到以下信息:

Caused by: java.net.ConnectException: Cannot assign requested address
at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Utils.java:964)
at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:179)
at java.net.http/jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56)
at java.net.http/jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:369)
at java.net.http/jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:127)
at java.net.http/jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:88)
at java.net.http/jdk.internal.net.http.Exchange.establishExchange(Exchange.java:293)
at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:425)
at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:330)
at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Exchange.java:322)
at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:304)
at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:250)
at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1705)
at java.net.http/jdk.internal.net.http.HttpClientImpl$DelegatingExecutor.execute(HttpClientImpl.java:153)
at java.base/java.util.concurrent.CompletableFuture.completeAsync(CompletableFuture.java:2591)
at java.net.http/jdk.internal.net.http.MultiExchange.responseAsync(MultiExchange.java:204)
at java.net.http/jdk.internal.net.http.HttpClientImpl.sendAsync(HttpClientImpl.java:632)

下面是我使用的类:

public class JavaHttpClient {
HttpClient httpClient = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(30))
.followRedirects(HttpClient.Redirect.ALWAYS).build();

public String getRequest(String incomingUrl) throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(incomingUrl)).GET().build();
HttpResponse<String> response = httpClient.send(request, BodyHandlers.ofString());

return response.body();
}

}

我不明白为什么会这样。我假设某些本应关闭的内容处于打开状态?

最佳答案

HttpClient 将在不再被引用且没有正在进行的操作(已收到所有响应)时关闭所有打开的连接。

关于java - java.net.http.HttpClient 需要关闭吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56468944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com