如何将自定义配置的 Apache HttpClient 与 Jersey Client 2 结合使用?
带有缓存的 HttpClient ( from apache docs )
CacheConfig cacheConfig = CacheConfig.custom()
.setMaxCacheEntries(1000)
.setMaxObjectSize(8192)
.build();
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(30000)
.setSocketTimeout(30000)
.build();
CloseableHttpClient cachingClient = CachingHttpClients.custom()
.setCacheConfig(cacheConfig)
.setDefaultRequestConfig(requestConfig)
.build();
一般情况下通过设置使用 Apache Http
protected ClientConfig getClientConfig() {
ClientConfig config = new ClientConfig();
config.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);
final PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
config.property(ApacheClientProperties.CONNECTION_MANAGER, connectionManager);
final ApacheConnectorProvider connector = new ApacheConnectorProvider();
config.connectorProvider(connector);
return config;
}
但是如何像上面一样使用自定义 http 客户端配置呢?
最佳答案
您可以使用ApacheHttpClientBuilderConfigurator 。所以你可以这样做:
config.register(new ApacheHttpClientBuilderConfigurator() {
public HttpClientBuilder configure(HttpClientBuilder httpClientBuilder) {
return httpClientBuilder.setDefaultRequestConfig(requestConfig);
}
});
参见the example .
目前不正确支持 Apache 缓存客户端。您可以从该方法返回 CachingHttpClientBuilder,但 HttpClientBuilder 没有 getter 来查看已设置的内容,因此您需要从头开始设置所有内容。
关于java - 使用启用缓存的 Apache HttpClient 作为 Jersey 2 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60171516/