【发布时间】:2020-10-13 13:40:27
【问题描述】:
我在我的应用程序中调用以下代码。第一个请求总是正常工作。我的问题是没有发送每个后续请求,当我指定超时值时,它会超时。否则它似乎无休止地等待。似乎第一个请求会阻止每次后续尝试的连接。如何确保再次正确释放连接?也许一些标题?也许有些属性(默认用于 http https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/doc-files/net-properties.html)?
HttpRequest request = HttpRequest.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.GET()
.uri(URI.create(url))
.build();
try {
HttpResponse<Path> response = client.send(request, HttpResponse.BodyHandlers.ofFile(Paths.get(outfile)));
} catch (IOException | InterruptedException e) {
// ...
}
使用:java.net.http.HttpClient (AdoptOpenJDK 11.0.7_10)
【问题讨论】:
-
我也建议调查服务器端,据我所知,我不认为这是连接问题
-
没有下载请求从同一台服务器正常工作,只有这个下载会产生问题
-
后续请求被阻塞是什么意思?你能显示代码你是如何多次调用这个方法的吗?
-
作为帮助调试的开始,我建议记录堆栈发出的请求/响应:
-Djdk.httpclient.HttpClient.log=errors,requests,headers
标签: java java-11 java-http-client