连接和连接请求超时
我正在使用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中,以下是如何构建使用特定connectTimeoutMillis
和requestTimeoutMillis
的客户端。
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很糟糕。 尝试手动弄清楚如何使用配置构建器。 哇靠。
- Java8,HttpClient,收到“收到致命警报:handshake_failure”
- 使用Mockito模拟Apache HTTPClient
- Android:下载HTML并不总是有效
- 使用RestTemplate进行基本身份validation(3.1)
- 什么是apache中的SchemeRegistry以及何时应该使用它?
- 强制重试特定的http状态代码
- 在客户端接收多部分响应(ClosableHttpResponse)
- 从NameValuePairs列表创建UrlEncodedFormEntity会抛出NullPointerException
- 如何在java中设置SSL协议版本? 我怎么知道哪一个? javax.net.ssl.SSLException:收到致命警报:protocol_version