如何在 Apache HttpClient 4.5 中设置默认超时? (流利)
How to set default timeout in Apache HttpClient 4.5? (fluent)
我在 Java 控制台应用程序中使用 Apache HttpClient 4.5(具有流畅的界面)。我注意到,它的默认超时值似乎是无限的,但我必须为我发送的请求使用非无限的超时值。我想对所有请求使用相同的超时值。
我如何全局设置默认的连接超时和套接字超时值,这样我就不必在发送请求的代码中的每个地方都设置它们?
(记得我用的是流畅的界面)
示例:
现在,我发送请求的代码中的每个地方我都会做类似的事情:(简单示例)
HttpResponse response = Request.Get(url)
.connectionTimeout(CONNECTION_TIMEOUT) // <- want to get rid of this
.sessionTimeout(SESSION_TIMEOUT) // <- and this
.execute()
.returnResponse();
我想做的是在我的程序开始时一劳永逸地设置默认值。类似于:
SomeImaginaryConfigClass.setDefaultConnectionTimeout(CONNECTION_TIMEOUT);
SomeImaginaryConfigClass.setDefaultSessionTimeout(SESSION_TIMEOUT);
这样我就可以像这样发送请求
HttpResponse response = Request.Get(url).execute().returnResponse();
无需在每次调用时设置超时参数。
我在网上看到了一些答案,但它们要么是针对旧版本的 Apache HttpClient(即不起作用),要么是关于使用构建器或传递配置 class或其他方法对我的需要来说太复杂了。我只想设置默认的超时值,没有比这更好的了。我在哪里做这个?
可以使用自定义 Executor
来做到这一点
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000)
.setSocketTimeout(5000)
.build();
SocketConfig socketConfig = SocketConfig.custom()
.setSoTimeout(5000)
.build();
CloseableHttpClient client = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setDefaultSocketConfig(socketConfig)
.build();
Executor executor = Executor.newInstance(client);
executor.execute(Request.Get("http://thishost/")).returnResponse();
executor.execute(Request.Get("http://thathost/")).returnResponse();
我在 Java 控制台应用程序中使用 Apache HttpClient 4.5(具有流畅的界面)。我注意到,它的默认超时值似乎是无限的,但我必须为我发送的请求使用非无限的超时值。我想对所有请求使用相同的超时值。
我如何全局设置默认的连接超时和套接字超时值,这样我就不必在发送请求的代码中的每个地方都设置它们? (记得我用的是流畅的界面)
示例:
现在,我发送请求的代码中的每个地方我都会做类似的事情:(简单示例)
HttpResponse response = Request.Get(url)
.connectionTimeout(CONNECTION_TIMEOUT) // <- want to get rid of this
.sessionTimeout(SESSION_TIMEOUT) // <- and this
.execute()
.returnResponse();
我想做的是在我的程序开始时一劳永逸地设置默认值。类似于:
SomeImaginaryConfigClass.setDefaultConnectionTimeout(CONNECTION_TIMEOUT);
SomeImaginaryConfigClass.setDefaultSessionTimeout(SESSION_TIMEOUT);
这样我就可以像这样发送请求
HttpResponse response = Request.Get(url).execute().returnResponse();
无需在每次调用时设置超时参数。
我在网上看到了一些答案,但它们要么是针对旧版本的 Apache HttpClient(即不起作用),要么是关于使用构建器或传递配置 class或其他方法对我的需要来说太复杂了。我只想设置默认的超时值,没有比这更好的了。我在哪里做这个?
可以使用自定义 Executor
来做到这一点
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000)
.setSocketTimeout(5000)
.build();
SocketConfig socketConfig = SocketConfig.custom()
.setSoTimeout(5000)
.build();
CloseableHttpClient client = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setDefaultSocketConfig(socketConfig)
.build();
Executor executor = Executor.newInstance(client);
executor.execute(Request.Get("http://thishost/")).returnResponse();
executor.execute(Request.Get("http://thathost/")).returnResponse();