我是Apache HttpClient
的新手,我使用以下代码在特定时间间隔后获取HTTP连接超时(已断开连接):
PostMethod method = new PostMethod(authURL);
HttpClient client = new HttpClient();
HttpClientParams params= new HttpClientParams();
params.setParameter(params.CONNECTION_MANAGER_TIMEOUT, 10); //10 Nano second
client.executeMethod(method);
但它等待超过一分钟没有任何希望超时/断开?问题出在哪里?
答案 0 :(得分:4)
HTTPClient涉及2次超时,尝试设置两者,
client.getHttpConnectionManager().
getParams().setConnectionTimeout(5000);
client.getHttpConnectionManager().
getParams().setSoTimeout(5000);
但是,如果连接卡在本机套接字调用中,则将忽略这些值。因此,您可能必须在不同的线程中运行请求,以便您可以将其计时。请参阅我对此问题的答案,如何做到这一点,
答案 1 :(得分:1)
当尝试从连接管理器获取连接的行为花费太长时间时,将触发连接管理器超时。这与http连接本身的超时不同。改为使用HttpClientParams.setSoTimeout()。
答案 2 :(得分:0)
您是否看过设置SO_TIMEOUT?
设置套接字超时(SO_TIMEOUT) 以毫秒为单位时使用 执行该方法。超时值 零被解释为无限 超时。