【问题标题】:Apache HttpClient 4.3 SocketConfig.getSoTimeout() vs RequestConfig.getSocketTimeout()Apache HttpClient 4.3 SocketConfig.getSoTimeout() 与 RequestConfig.getSocketTimeout()
【发布时间】:2018-01-22 08:32:58
【问题描述】:

在 Apache HttpClient 4.3 中构建 CloseableHttpClient 时,我可以使用

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

并将其发送到我的连接管理器的setDefaultSocketConfig() 方法。

我也可以用

RequestConfig.custom().setSocketTimeout(socketTimeout).build()

并将其发送到我的 http 客户端构建器的 setDefaultRequestConfig() 方法。

这些会有相同的最终效果还是不同的最终效果?

【问题讨论】:

    标签: java apache-httpclient-4.x


    【解决方案1】:

    SocketConfig 中的套接字超时表示应用于新创建连接的默认值。通过在RequestConfig 中设置一个非零的套接字超时值,可以为单个请求覆盖此值。

    【讨论】:

    • 如果同时存在SocketConfigdefault RequestConfig,会发生什么?
    • SocketConfig 仅在创建新套接字时适用。 RequestConfig 套接字超时值总是覆盖在构建时设置的。
    • 换句话说,看起来 SocketConfig 的套接字超时 仍然用于 用于初始套接字创建,而不管 RequestConfig 的套接字超时。我们发现了一个问题,似乎需要 SocketConfig 和 RequestConfig 上的套接字超时。
    • socketTimeout 值是秒/毫秒?从 java 文档中我很不清楚,因为它没有指定。
    • @RaduToader 套接字超时始终以毫秒为单位。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多