当前位置: 首页 > 面试题库 >

apache HttpClient API中的setConnectionTimeout,setSoTimeout和“ http.connection- manager.timeout”之间有什么区别

穆招
2023-03-14
问题内容

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

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服务器发送给客户端的信息。换句话说,建立连接后到达客户端的两个连续数据包之间的 最大周期不活动

  • http.connection-manager.timeoutMultiThreadedHttpConnectionManager使用 HTTP连接池 。它为每个主机设置了最大值和最小值。如果特定主机的所有连接都达到最大值,则同一主机对新连接的请求将必须等待,直到现有连接中的任何一个变为空闲为止。此参数表示发出连接请求时和HttpConnectionManager返回连接之前所经过的时间。



 类似资料:
  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: 我是AngularJS的新手。谁能解释一下这些AngularJS运算符之间的区别:用适当的示例隔离范围时。 问题答案: 允许将在指令属性上定义的值传递到指令的隔离范围。该值可以是简单的字符串值(),也可以是带有嵌入式表达式()的AngularJS插值字符串。可以将其视为从父作用域到子指令的“单向”通信。约翰·林德奎斯特(John Lindquist)进行了一系列简短的电视广播,解释了每

  • 问题内容: 我是AngularJS的新手。谁能解释一下这些AngularJS运算符之间的区别:用适当的示例隔离范围时。 问题答案: 允许将在指令属性上定义的值传递到指令的隔离范围。该值可以是简单的字符串值(),也可以是带有嵌入式表达式()的AngularJS插值字符串。将其视为从父作用域到子指令的“单向”通信。 允许指令的隔离范围将值传递到父范围中,以便在属性中定义的表达式中进行求值。请注意,指令

  • 问题内容: 我想知道两个运算符之间以及在Oracle中是否存在任何差异。 在某些情况下,它们可以给出不同的结果或不同的性能吗? 问题答案: 没有,功能上完全没有区别。 (对于所有其他DBMS都是一样的-它们大多数都支持两种样式): 这是当前的SQL参考:https : //docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC S

  • 问题内容: PHP中的 Session 和 Cookies 之间有什么区别? 问题答案: Cookie是浏览器存储的一点数据,并随每个请求发送到服务器。 会话是存储在服务器上并与给定用户相关联的数据的集合(通常通过包含ID码的Cookie)

  • 在Auth0中,可以使用刷新令牌。在这个链接中,我们可以看到很多返回的参数: