В этом коде показаны различные параметры:
Код: Выделить всё
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(connectionRequestTimeout, TimeUnit.MILLISECONDS)
.setResponseTimeout(responseTimeout, TimeUnit.MILLISECONDS)
.setConnectTimeout(connectTimeout, TimeUnit.MILLISECONDS) // Deprecated - Use {@link ConnectionConfig.Builder#setConnectTimeout(Timeout)}.
.build();
ConnectionConfig connectionConfig = ConnectionConfig.custom()
.setConnectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
.setSocketTimeout(socketTimeout, TimeUnit.MILLISECONDS)
.build();
SocketConfig socketConfig = SocketConfig.custom()
.setSoTimeout(socketTimeout, TimeUnit.MILLISECONDS)
.build();
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultConnectionConfig(connectionConfig)
.setDefaultSocketConfig(socketConfig)
.build();
HttpClient httpClient = HttpClientBuilder.create()
.setConnectionManager(poolingHttpClientConnectionManager)
.setDefaultRequestConfig(requestConfig)
.build();
Код: Выделить всё
ConnectionRequestTimeoutКод: Выделить всё
ConnectTimeoutНо в чем разница между:
Код: Выделить всё
RequestConfig.setResponseTimeout()
ConnectionConfig.setSocketTimeout()
SocketConfig.setSoTimeout()
По результатам некоторых ограниченных тестов кажется, что ResponseTimeout переопределяет остальные, возможно, подразумевая, что это все, что мне нужно.
В данном случае это все, что мне нужно.
было бы неплохо просто использовать RequestConfig, чтобы установить все три, но ConnectTimeout там устарел и перемещен в ConnectionConfig, который также содержит SocketTimeout.
Я использую это с SpringBoot 3/Spring 6, и недавнее удаление параметра конфигурации readTimeout в HttpComponentsClientHttpRequestFactory, похоже, подразумевает, что лучше всего настроить его непосредственно в HttpClient.< /п>
Подробнее здесь: https://stackoverflow.com/questions/780 ... tpclient-5
Мобильная версия