|
47 | 47 | import okhttp3.OkHttpClient.Builder; |
48 | 48 | import org.apache.commons.logging.Log; |
49 | 49 | import org.apache.commons.logging.LogFactory; |
50 | | -import org.apache.http.client.config.RequestConfig; |
51 | | -import org.apache.http.conn.ssl.SSLConnectionSocketFactory; |
52 | | -import org.apache.http.impl.client.HttpClientBuilder; |
53 | | -import org.apache.http.impl.client.HttpClients; |
54 | | -import org.apache.http.impl.client.LaxRedirectStrategy; |
55 | | -import org.apache.http.impl.conn.DefaultSchemePortResolver; |
56 | | -import org.apache.http.impl.conn.SystemDefaultRoutePlanner; |
| 50 | +import org.apache.hc.client5.http.config.RequestConfig; |
| 51 | +import org.apache.hc.client5.http.impl.DefaultSchemePortResolver; |
| 52 | +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; |
| 53 | +import org.apache.hc.client5.http.impl.classic.HttpClients; |
| 54 | +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; |
| 55 | +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder; |
| 56 | +import org.apache.hc.client5.http.impl.routing.SystemDefaultRoutePlanner; |
| 57 | +import org.apache.hc.client5.http.ssl.HttpsSupport; |
| 58 | +import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory; |
| 59 | +import org.apache.hc.core5.http.io.SocketConfig; |
57 | 60 |
|
58 | 61 | import org.springframework.http.client.ClientHttpRequestFactory; |
59 | 62 | import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; |
@@ -303,22 +306,29 @@ static ClientHttpRequestFactory usingHttpComponents(ClientOptions options, SslCo |
303 | 306 | } |
304 | 307 |
|
305 | 308 | SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, |
306 | | - enabledProtocols, enabledCipherSuites, SSLConnectionSocketFactory.getDefaultHostnameVerifier()); |
307 | | - httpClientBuilder.setSSLSocketFactory(sslSocketFactory); |
308 | | - httpClientBuilder.setSSLContext(sslContext); |
| 309 | + enabledProtocols, enabledCipherSuites, HttpsSupport.getDefaultHostnameVerifier()); |
| 310 | + PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder // |
| 311 | + .create().setSSLSocketFactory(sslSocketFactory) // |
| 312 | + .setDefaultSocketConfig(SocketConfig.custom() // |
| 313 | + .setSoTimeout(Math.toIntExact(options.getReadTimeout().toMillis()), |
| 314 | + TimeUnit.MILLISECONDS) |
| 315 | + .build()) // |
| 316 | + .build(); // |
| 317 | + httpClientBuilder.setConnectionManager(connectionManager); |
309 | 318 | } |
310 | 319 |
|
311 | 320 | RequestConfig requestConfig = RequestConfig.custom() |
312 | 321 | // |
313 | | - .setConnectTimeout(Math.toIntExact(options.getConnectionTimeout().toMillis())) // |
314 | | - .setSocketTimeout(Math.toIntExact(options.getReadTimeout().toMillis())) // |
| 322 | + .setConnectTimeout(Math.toIntExact(options.getConnectionTimeout().toMillis()), |
| 323 | + TimeUnit.MILLISECONDS) // |
315 | 324 | .setAuthenticationEnabled(true) // |
316 | 325 | .build(); |
317 | 326 |
|
318 | 327 | httpClientBuilder.setDefaultRequestConfig(requestConfig); |
319 | 328 |
|
320 | 329 | // Support redirects |
321 | | - httpClientBuilder.setRedirectStrategy(new LaxRedirectStrategy()); |
| 330 | + // TODO: DefaultRedirectStrategy doesn't take method into account |
| 331 | + // httpClientBuilder.setRedirectStrategy(new LaxRedirectStrategy()); |
322 | 332 |
|
323 | 333 | return new HttpComponentsClientHttpRequestFactory(httpClientBuilder.build()); |
324 | 334 | } |
|
0 commit comments