我试图找出Apache HttpClient的超时。doc 文件* 表示 http 连接的默认超时是"系统默认"超时。但什么是"系统默认"?如何找出"系统默认"超时值的设置
?*"超时值为零被解释为无限超时。负值被解释为未定义(系统默认值(。
默认值:-1"(https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/config/RequestConfig.html#getConnectTimeout(((
在此特定情况下,系统默认值表示 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");