httpclient - setDefaultRequestConfig方法会覆盖系统属性 - CloseableHttpClient

标签 httpclient apache-httpclient-4.x

我正在使用以下代码发出 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/

相关文章:

c# - 在ASP.NET Core中删除HTTP客户端日志记录处理程序

java - 我应该将超时设置为 "getting connection from pool"吗?

java - 使用 Apache 的 HttpClient 时是否需要指定超时?

java - Apache HttpClient 未收到完整响应

java - 绕过 DNS 查找并将 URL 提交给代理

php - 使用 PHP 缓存 HTTP 文件

c# - 寻找设计模式来自动执行重复任务,例如登录/注销

javascript - 在这种情况下,为什么 Angular HTTPClient 会重复剩余调用两次?

java-8 - 如何使用 javax.net.ssl.SSLContext 设置密码套件

ssl - 为什么 Apache HttpClient 4.4 拒绝将 www.googleapis.com 作为有效的主机名?