【问题标题】:Find out system defaults for HttpClient timeouts找出 HttpClient 超时的系统默认值
【发布时间】:2014-10-23 10:10:51
【问题描述】:

如何找出 HttpClient 4.3 的实际超时值?我知道如何显式设置它们,但如果我不覆盖它们,我想知道隐式使用了哪些值。

示例

import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.params.HttpParams;

public class HttpClientDefaults
{

    public static void main(String[] args)
    {       
        RequestConfig config = RequestConfig.custom().build();
        System.out.println("ConnectionRequestTimeout: " + config.getConnectionRequestTimeout());
        System.out.println("ConnectTimeout: " + config.getConnectTimeout());
        System.out.println("SocketTimeout: " + config.getSocketTimeout());
        CloseableHttpClient client = HttpClientBuilder.create().setRetryHandler(new DefaultHttpRequestRetryHandler()).build();
        HttpParams params = client.getParams();
        System.out.println(params.getParameter("http.socket.timeout"));
    }

}

输出

ConnectionRequestTimeout: -1
ConnectTimeout: -1
SocketTimeout: -1
Exception in thread "main" java.lang.UnsupportedOperationException

client.getParams() 抛出 java.lang.UnsupportedOperationException 异常。有人知道读出将要使用的实际值的方法吗?

【问题讨论】:

  • 哪行代码引发了该异常?
  • 在 org.apache.http.impl.client.InternalHttpClient.getParams(InternalHttpClient.java:206)
  • 我正在使用 v4.3.2 顺便说一句。
  • @jansohn 你得到这个答案了吗?我正在寻找相同的
  • @NishanthiWickramasinghe 不,我没有...

标签: java timeout apache-httpclient-4.x


【解决方案1】:

套接字、连接和连接请求超时的默认值为 0(无超时)

【讨论】:

  • 如果那是真的,我应该不会遇到 java.net.SocketTimeoutException,不是吗?当我连接到一个网络应用程序时,我偶尔会得到这些,所以我想找出默认值实际上是什么。
  • 这是真的。随意查看源代码。
猜你喜欢
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2017-12-25
  • 2021-07-11
相关资源
最近更新 更多