fsi*_*one 11 java spring apache-httpcomponents
我正在尝试在 Spring 中设置 httpClient5 ...我有以下代码:
PoolingHttpClientConnectionManager connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setSSLSocketFactory(SSLConnectionSocketFactoryBuilder.create()
.setSslContext(SSLContexts.createSystemDefault())
.setTlsVersions(TLS.V_1_3, TLS.V_1_2)
.build())
.setDefaultSocketConfig(SocketConfig.custom()
.setSoTimeout(Timeout.ofSeconds(5))
.build())
.setPoolConcurrencyPolicy(PoolConcurrencyPolicy.STRICT)
.setConnPoolPolicy(PoolReusePolicy.LIFO)
.setConnectionTimeToLive(TimeValue.ofMinutes(1L))
.build();
CloseableHttpClient client = HttpClients.custom()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(RequestConfig.custom()
.setConnectTimeout(Timeout.ofSeconds(5))
.setResponseTimeout(Timeout.ofSeconds(5))
.setCookieSpec(StandardCookieSpec.STRICT)
.build())
.build();
CookieStore cookieStore = new BasicCookieStore();
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
HttpClientContext clientContext = HttpClientContext.create();
clientContext.setCookieStore(cookieStore);
clientContext.setCredentialsProvider(credentialsProvider);
clientContext.setRequestConfig(RequestConfig.custom()
.setConnectTimeout(Timeout.ofSeconds(5000))
.setResponseTimeout(Timeout.ofSeconds(5000))
.build());
// connect Spring httpComponent (client-side) with Apache httpClient
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
httpRequestFactory.setReadTimeout(60000);
httpRequestFactory.setConnectTimeout(60000);
httpRequestFactory.setHttpClient(client);
Run Code Online (Sandbox Code Playgroud)
ClosableHttpClient 类实现了与 setHttpClient(client) 不兼容的接口 org.apache.hc.client5.http.classic.HttpClient ;这是运行时错误:
java.lang.ClassCastException: class org.apache.hc.client5.http.impl.classic.InternalHttpClient cannot be cast to class org.apache.http.client.HttpClient (org.apache.hc.client5.http.impl.classic.InternalHttpClient and org.apache.http.client.HttpClient are in unnamed module of loader 'app')
Run Code Online (Sandbox Code Playgroud)
我正在使用 Spring 5.0 和 HttpComponents-client-5。如何将 HttpClient 4.X 转换为 HttpClient 5 ?
ok2*_*k2c 11
Apache HttpClient 4.5 和 HttpClient 5.0 classic 非常相似,但 API 完全不兼容。
在 Spring 提供基于 Apache HttpClient 5.xRequestFactory的实现之前,我们无法将 HttpClient 5.x 与 Spring 集成。
| 归档时间: |
|
| 查看次数: |
17976 次 |
| 最近记录: |