我从我的应用程序中完全复制了这种方法,尽管它还没有完成,但如果事情不顺利,它确实会尝试为我提供超时堆栈跟踪:
protected boolean isHttpAlive() {
boolean isHttpOk = false;
HttpURLConnection httpConnection = null;
try {
URL gurl = new URL("http://www.amazon.com/");
URLConnection connection = gurl.openConnection();
connection.setConnectTimeout(5 * 1000); // 5 seconds!
httpConnection = (HttpURLConnection) connection;
int responseCode = httpConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK)
isHttpOk = true;
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (httpConnection != null)
httpConnection.disconnect();
}
return isHttpOk;
}
现在在我的一个测试设备(Droid)上,当出现问题时,我确实会得到异常,但是只有在6分钟36秒后才会抛出超时异常,而不是像上面的代码中设置的5秒钟。
超时异常是由
getResponseCode()
引起的。为什么?
我错过了什么?