两者之间有什么区别(标记为评论):

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并获得响应时,在较低级别上,将创建一个客户端套接字,该客户端套接字建立与远程服务器套接字的连接,发送一些数据并接收响应。

  • setConnectionTimeout :客户端尝试连接到服务器。这表示在建立连接或服务器响应连接请求之前经过的时间。
  • setSoTimeout :建立连接后,客户端套接字在发送请求后等待响应。这是自服务器向服务器发送请求到服务器响应之前经过的时间。请注意,这与服务器发送给客户端的HTTP Error 408不同。换句话说,在建立连接后到达客户端的两个连续数据包之间的最大周期不 Activity
  • http.connection-manager.timeout :MultiThreadedHttpConnectionManager使用HTTP连接池。它为每个主机设置了最大值和最小值。如果特定主机的所有连接都达到最大值,则同一主机对新连接的请求将不得不等待,直到现有连接中的任何一个变为空闲为止。此参数表示发出连接请求时和HttpConnectionManager返回连接之前经过的时间。
  • 09-30 11:37