【发布时间】:2014-11-19 05:59:57
【问题描述】:
Apache HttpClient 框架允许您指定连接超时和套接字超时,如下所示:
final HttpParams httpParams = new BasicHttpParams();
if (connectionTimeout > 0) {
HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeout);
}
if (socketTimeout > 0) {
HttpConnectionParams.setSoTimeout(httpParams, socketTimeout);
}
HttpClient client = new DefaultHttpClient(httpParams);
我想微调我的连接超时。 This question 很好地解释了设置之间的区别,但对调试抛出的异常没有帮助。
我的问题是,每种超时都会引发什么异常?我有一个java.net.SocketTimeoutException;这是来自连接超时还是套接字超时?我怀疑是后者,特别是因为消息说“读取超时”。连接超时会抛出什么异常? TimeoutException? ConnectException?为什么Apache Http Docs 中没有捕捉到超时设置和抛出异常之间的关系?
SocketTimeoutException 的直接父类是InterruptedIoException 和IOException;前者只有SocketTimeoutException 的子类,但IOException 有很多子类。是否有另一个参考资料涵盖了人们可以期望从 HttpClient execute 方法接收到的所有异常类型?它只是声明它可以抛出一个IOException,这真的很广泛。
【问题讨论】:
标签: java sockets connection timeout apache-httpclient-4.x