我正在使用Http Apache组件来执行http交互。我需要调整我的http客户端。为此,我有两个参数:连接超时和连接请求超时。在库文档和源代码中(没有发现任何评论),我没有找到这个术语的定义。我需要知道他们究竟意味着什么。可能它们是在HTTP协议文档中定义的,但我找不到它。所以,我的问题是这两个术语是什么意思,以及它们如何区分彼此。连接和连接请求超时
回答
HttpClient
有办法根据http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/HttpClient.html
Connection timeout
设置连接插座超时(setConnectionTimeout()
和setTimeout()
)是超时直至与服务器的连接被建立。
Socket timeout
是接收数据的超时(套接字超时)。
例如:
假设您指向浏览器访问网页。如果服务器在X秒内没有连接,则会发生连接超时。但是,如果它建立了连接,那么服务器将开始处理浏览器的结果。如果它在Y秒内没有结束这个处理,将发生套接字超时。
谢谢你的回复,但我仍然有一个问题。这里是请求配置生成器http://hc.apache.org/httpcomponents-client-4.3.x/httpclient/apidocs/org/apache/http/client/config/RequestConfig.Builder.html,它有三个方法setConnectionRequestTimeout,setConnectTimeout ,setSocketTimeout(并且没有评论!)。所以我仍然不知道每种方法的作用和我应该使用的方法。 – mvb13
好吧,我终于发现getConnectionRequestTimeout返回从连接管理器请求连接时使用的以毫秒为单位的imeout。我猜连接管理器是apache-httpcomponents库类,所以我不会使用它。我将使用setConnectionTimeout()和setTimeout()。 – mvb13
对于后人,在HttpClient 4.X.X中,以下是如何构建使用特定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();
...
顺便说一句,这段代码的javadocs很烂。试着弄清楚如何使用config builder。哇靠。
- 1. ODP.NET连接请求超时
- 2. Oracle连接请求超时
- 3. Python请求模块连接超时
- 4. 连接超时在iPhone为http请求
- 5. Oracle ManagedDataAccess - 连接请求超时 - 合并
- 6. 连接超时 - 获取请求
- 7. 连接超时:连接JAVA和Wampserver
- 8. 连接超时和连接生存期
- 9. javax.xml.transform.TransformerException:com.sun.org.apache.xml.internal.utils.WrappedRuntimeException:连接超时:连接
- 10. https连接和ajax请求
- 11. Alamofire请求总是失败,如果Socket.io连接“请求超时”
- 12. perl LWP:连接超时与请求超时不同
- 13. 连接超时
- 14. 连接超时
- 15. 连接超时
- 16. 连接超时
- 17. 连接超时
- 18. 如何在Android中添加HttpClient请求和连接超时
- 19. 的HttpClient和连接超时
- 20. SSL连接超时和读取超时
- 21. 连接超时:连接请教IDE日志
- 22. 重新连接到MySQL连接超时
- 23. 获取连接超时与DB连接
- 24. SocketChannel - java.net.ConnectException:连接超时:连接
- 25. Healthvault Java API:连接超时:连接
- 26. 连接超时连接到EC2
- 27. Tomcat的连接池,连接超时
- 28. 获取连接超时:连接
- 29. 轴代理连接超时:连接
- 30. 错误:连接超时:连接 - Android
尝试搜索他们没有Apache或非Java关键字:http://en.wikipedia.org/wiki/Timeout_(computing) –