在HttpURLConnection中区分读取和连接超时

时间:2014-09-24 20:37:14

标签: java android httpurlconnection

我想在使用HttpURLConnection时区分连接超时读取超时。 当两者中的任何一个发生时,它会抛出SocketTimeoutException

如果发生连接超时,则会包含一条消息作为异常消息。例如:

failed to connect to /192.168.X.X (port X) after Xms

如果发生读取超时,则不会包含任何消息。

相关:

当然,我可以通过以下事实来区分它们:一个似乎包含一条消息而另一个没有,但似乎并不合理。如果实现改变了代码中断。

我本来期望两种不同的例外。也许还有我想念的东西。

1 个答案:

答案 0 :(得分:2)

使用setter设置超时值后,您可以执行以下操作

try {
  connection.connect();
  try {
    yourCustomReadMethodThatThrowsSocketTimeoutException(connection);
  } catch (SocketTimeoutException e) {
    Log.e("asdf", "this is a read timeout");
  }
} catch (SocketTimeoutException e) {
  Log.e("asdf", "this is a connect timeout");
}