java - 在 RequestConfig 和 SocketConfig 中设置套接字超时对于 HTTP 和 HTTPS 的工作方式不同

标签 java https apache-httpclient-4.x

我在SocketConfig中设置了套接字超时,并将SocketConfig设置为连接管理器

connManager.setDefaultSocketConfig(SocketConfig.custom().setSoTimeout(soTimeout).build())

并通过在 RequestConfig 中将单个请求的套接字超时值设置为

httpRequest.setConfig(RequestConfig.copy(defaultRequestConfig).setSocketTimeout(timeout).build())  

引用link .

对于所有 http 请求,使用 RequestConfig 设置的新值将按预期覆盖旧值。 但对于 https 请求,它始终考虑 SocketConfig 中设置的旧值。

在得知这可能是 4.3.1 引用 link 中的问题后,我还将 httpclient 从 4.3.1 升级到 4.3.6 。 但即使这样也没有帮助我解决问题。
我错过了什么吗?关于如何解决这个问题有什么想法吗?

最佳答案

这只是部分正确。 RequestConfig 代表请求级别设置,而SocketConfig 代表连接级别设置。安全连接需要进行 SSL/TLS 握手并建立安全 session ,然后才能用于执行请求。因此,只有在完全建立 HTTPS 连接后才能联合 RequestConfig 设置。在此之前,仅适用 SocketConfig

关于java - 在 RequestConfig 和 SocketConfig 中设置套接字超时对于 HTTP 和 HTTPS 的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27833836/

相关文章:

java - HTTPS URL 的连接超时

java - DefaultHttpClient 在多个请求上保持 Activity 连接

apache-httpclient-4.x - HttpClient 不可序列化异常

java - 了解嵌套循环和类

Java httpclient 4.1 如何发送带有可配置端口的post请求

Java 集合(链表概念)

java - Eclipse 中的 Tomcat 给出 java.security.UnrecoverableKeyException- 无法恢复 key 错误

java - 未收到 Apache HttpAsyncClient 响应

java - 使用 SimpleDateFormat 格式化日期时抛出 ClassCastException

java - 表单提交两次并使用 null 值并给出 500 错误