HttpClient connectionRequestTimeout、connectTimeout、socketTimeout

目录

1.比较

2.使用

3.参考


1.比较

HttpClient   connectionRequestTimeout、connectTimeout、socketTimeout 三个参数对比:

connectionRequestTimeoutReturns the timeout in milliseconds used when requesting a connection from the connection manager.
connectTimeoutDetermines the timeout in milliseconds until a connection is established
socketTimeoutDefines the socket timeout ({@code SO_TIMEOUT}) in milliseconds,which is the timeout for waiting for data or, put differently,a maximum period inactivity between two consecutive data packets.

connectionRequestTimeout:等待从连接管理器、连接池获取连接的时间。HttpClient维护一个连接池来管理连接,类似于数据库连接池),单位毫秒

connectTimeout:与远程主机、服务器建立连接的最长时间,单位毫秒

socketTimeout:当数据从服务器传输到客户端时,两个连续数据包之间的最大时间间隔,单位毫秒

 /**
     * Returns the timeout in milliseconds used when requesting a connection
     * from the connection manager.
     * <p>
     * A timeout value of zero is interpreted as an infinite timeout.
     * A negative value is interpreted as undefined (system default if applicable).
     * </p>
     * <p>
     * Default: {@code -1}
     * </p>
     */
    public int getConnectionRequestTimeout() {
        return connectionRequestTimeout;
    }

    /**
     * Determines the timeout in milliseconds until a connection is established.
     * <p>
     * A timeout value of zero is interpreted as an infinite timeout.
     * A negative value is interpreted as undefined (system default if applicable).
     * </p>
     * <p>
     * Default: {@code -1}
     * </p>
     */
    public int getConnectTimeout() {
        return connectTimeout;
    }

    /**
     * Defines the socket timeout ({@code SO_TIMEOUT}) in milliseconds,
     * which is the timeout for waiting for data or, put differently,
     * a maximum period inactivity between two consecutive data packets).
     * <p>
     * A timeout value of zero is interpreted as an infinite timeout.
     * A negative value is interpreted as undefined (system default if applicable).
     * </p>
     * <p>
     * Default: {@code -1}
     * </p>
     */
    public int getSocketTimeout() {
        return socketTimeout;
    }

2.使用

 HttpPost httpPost = new HttpPost("URL");

RequestConfig requestConfig =RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.setSocketTimeout(socketTimeout).build();

httpPost.setConfig(config);

3.参考

源码:httpcomponents-client/RequestConfig.java at 4.5.x · apache/httpcomponents-client · GitHub

httpcomponents-website/QuickStart.java at master · apache/httpcomponents-website · GitHub

其他:

HttpClient 4.3.5 ConnectionRequestTimeOut vs ConnectTimeout for HttpConnectionParams.setConnectionTimeout in 4.0.1 - Stack Overflow

https://blog.csdn.net/du771278794/article/details/83008867

https://blog.csdn.net/russle/article/details/126064154

https://blog.csdn.net/ttyy1112/article/details/108711476
 

https://www.freesion.com/article/3275472895/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值