连接和连接请求超时

我正在使用Http Apache Components来执行http交互。 我需要调整我的http客户端。 为此,我有两个参数:连接超时和连接请求超时。 在图书馆文档和源代码中(没有找到评论)我没有找到这个术语的定义。 我需要知道他们究竟是什么意思。 可能是他们在HTTP协议文档中定义但我找不到它。 所以,我的问题是这两个术语的意思是什么以及它们如何相互区别。

根据http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/HttpClient.html,HttpClient有一种设置连接和套接字超时( setConnectionTimeout()setTimeout() )的方法。

Connection timeout是在建立与服务器的连接之前的超时。

Socket timeout是接收数据的超时(套接字超时)。

例:

假设您指向浏览器访问网页。 如果服务器在X秒内没有响起,则会发生连接超时。 但是如果它建立了连接,那么服务器将开始处理浏览器的结果。 如果它在Y秒内没有结束此处理,则会发生套接字超时。

在HttpClient 4.XX中,以下是如何构建使用特定connectTimeoutMillisrequestTimeoutMillis的客户端。

 HttpClientBuilder clientBuilder = HttpClientBuilder.create(); RequestConfig.Builder requestBuilder = RequestConfig.custom(); requestBuilder = requestBuilder.setConnectTimeout(connectTimeoutMillis); requestBuilder = requestBuilder.setConnectionRequestTimeout(requestTimeoutMillis); clientBuilder.setDefaultRequestConfig(requestBuilder.build()); CloseableHttpClient httpClient = clientBuilder.build(); ... 

顺便说一句,这个代码的javadoc很糟糕。 尝试手动弄清楚如何使用配置构建器。 哇靠。