gpt4 book ai didi

java - apache HttpClient API 中的 setConnectionTimeout 、 setSoTimeout 和 "http.connection-manager.timeout"有什么区别

转载 作者:IT老高 更新时间:2023-10-28 20:42:09 25 4
gpt4 key购买 nike

这三者有什么区别(标注为注释):

MultiThreadedHttpConnectionManager connManag =  new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams managParams = connManag.getParams();

managParams.setConnectionTimeout(connectiontimeout); // 1
managParams.setSoTimeout(sotimeout); //2

HttpMethodBase baseMethod = null;

try {
HttpClient client = new HttpClient(connManag);
client.getParams().setParameter("http.connection-manager.timeout", poolTimeout); //3

baseMethod = new GetMethod(…);
int statusCode = client.executeMethod(…);


}
catch (ConnectTimeoutException cte ){
//Took too long to connect to remote host
}
catch (SocketTimeoutException ste){
//Remote host didn’t respond in time
}
catch (Exception se){
//Some other error occurred
}
finally {
if (baseMethod != null)
baseMethod.releaseConnection();
}

1。 setConnectionTimeout - 如果它确定连接建立之前的超时时间。

2。 setSoTimeout - 如果它确定两个连续数据包之间的不活动时间或时间差,

那么下面这个是做什么的:

3。 "http.connection-manager.timeout"

最佳答案

在最低级别的 HTTP 是 TCP 套接字。因此,当您请求 URL 并获得响应时,在较低级别会创建一个客户端 Socket,它与远程服务器 Socket 建立连接,发送一些数据并接收响应。

  • setConnectionTimeout :客户端尝试连接到服务器。这表示在建立连接或服务器响应连接请求之前耗时。

  • setSoTimeout:建立连接后,客户端socket发送请求后等待响应。这是从客户端在服务器响应之前向服务器发送请求以来耗时。请注意,这与服务器发送给客户端的 HTTP Error 408 不同。换句话说,它在连接建立后两个连续数据包到达客户端之间的最大不活动时间

  • http.connection-manager.timeout:MultiThreadedHttpConnectionManager 使用 HTTP 连接池。它为每个主机设置了最大值和最小值。如果特定主机的所有连接都已达到最大值,则对同一主机的新连接请求将不得不等到现有连接中的任何一个空闲。此参数表示从发出连接请求到 HttpConnectionManager 返回连接之前耗时。

关于java - apache HttpClient API 中的 setConnectionTimeout 、 setSoTimeout 和 "http.connection-manager.timeout"有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18184899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com