我正在使用以下代码发出 Http 请求。
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(10000)
.setConnectionRequestTimeout(10000)
.setSocketTimeout(300000)
.build();
CloseableHttpClient httpClient = HttpClientBuilder.create().useSystemProperties().setDefaultRequestConfig(requestConfig).build();
我的简单问题是,方法 setDefaultRequestConfig
会删除所有系统属性并仅保留上面给出的属性,还是在发出 HTTP 请求时仅覆盖给定属性并保留其他系统属性。
最佳答案
HttpClientBuilder 可以选择考虑的系统属性如下
- ssl.TrustManagerFactory.algorithm
- javax.net.ssl.trustStoreType
- javax.net.ssl.trustStore
- javax.net.ssl.trustStoreProvider
- javax.net.ssl.trustStorePassword
- ssl.KeyManagerFactory.algorithm
- javax.net.ssl.keyStoreType
- javax.net.ssl.keyStore
- javax.net.ssl.keyStoreProvider
- javax.net.ssl.keyStorePassword
- https.协议(protocol)
- https.cipherSuites
- http.proxyHost
- http.proxyPort
- http.nonProxyHosts
- http.keepAlive
- http.maxConnections
- http.agent
请求级别配置对除代理主机和端口之外的任何设置都没有影响。请求级别的代理设置将覆盖系统级别的代理设置。
关于httpclient - setDefaultRequestConfig方法会覆盖系统属性 - CloseableHttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268163/