【发布时间】:2018-09-01 05:42:47
【问题描述】:
我试图找出 Apache HttpClient 的超时时间。 doc文件*说http连接的默认超时是“系统默认”超时。但是什么是“系统默认值”?以及如何找出“系统默认”超时设置的值?
*"超时值为零被解释为无限超时。负值被解释为未定义(系统默认)。
【问题讨论】:
标签: java apache http apache-httpclient-4.x
我试图找出 Apache HttpClient 的超时时间。 doc文件*说http连接的默认超时是“系统默认”超时。但是什么是“系统默认值”?以及如何找出“系统默认”超时设置的值?
*"超时值为零被解释为无限超时。负值被解释为未定义(系统默认)。
【问题讨论】:
标签: java apache http apache-httpclient-4.x
在这种特殊情况下,系统默认值意味着 Java 运行时设置的任何套接字超时值。如果未定义套接字超时配置参数,HttpClient 不会尝试控制连接套接字上的 SO_TIMEOUT 设置。
【讨论】:
根据documentation,http.socket.timeout参数控制SO_TIMEOUT值
与
可以通过HttpClient的setParameter()方法设置默认超时时间,
HttpClient httpclient = new HttpClient();
httpclient.getParams().setParameter("http.protocol.version",HttpVersion.HTTP_1_1);
httpclient.getParams().setParameter("http.socket.timeout", new Integer(1000));
httpclient.getParams().setParameter("http.protocol.content-charset", "UTF-8");
【讨论】: