【问题标题】:Apache HTTP - setSocketTimout vs setConnectTimout vs setConnectionRequestTimeoutApache HTTP - setSocketTimout vs setConnectTimout vs setConnectionRequestTimeout
【发布时间】:2016-08-31 17:58:38
【问题描述】:

setSocketTimout、setConnectTimout 和 setConnectionRequestTimeout 有什么区别?

RequestConfig requestConfig = RequestConfig.copy(RequestConfig.DEFAULT)
            .setSocketTimeout(500)
            .setConnectTimeout(500)
            .setConnectionRequestTimeout(500)
            .build();

【问题讨论】:

  • 那么你最终使用了什么? 500的socket timeout似乎有点极端,如果网络慢怎么办?

标签: apache-httpclient-4.x


【解决方案1】:

Connection timeout 是在与服务器建立连接之前的超时时间。

Socket timeout 是接收数据的超时时间。

setConnectionRequestTimeout 方法专门用于配置连接管理器。它返回从连接管理器请求连接时使用的超时时间(以毫秒为单位)。超时值为零被解释为无限超时。

【讨论】:

  • 典型应用你会用什么,500 毫秒似乎有点短。
【解决方案2】:

ConnectTimeOut:- 指客户端等待与服务器建立连接的最长时间(以毫秒为单位)。在给定时间内,服务器必须与客户端建立连接,否则会抛出异常。

SocketTimeout:- 它定义了两个连续数据包之间的最大空闲/不活动时间(以毫秒为单位)。

更多详情请参考javadocs

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 2012-07-07
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多