如果没有Internet连接,则HttpURLConnection getResponseCode()不会返回

时间:2014-11-03 06:43:55

标签: android web-services httpurlconnection android-webservice ws-client

我使用HttpURLConnection使用以下代码检查服务器URL是否可用:

try {
    boolean connectionFailed = false;
    URL knownURL = new URL("http://www.google.com");
    httpConnection = (HttpURLConnection) knownURL.openConnection();
    httpConnection.setConnectTimeout(5000);
    responseCode = httpConnection.getResponseCode();
    if (responseCode != 200)  {
        status = ConnectionStatus.NOT_CONNECTED; 
    }
}
catch(Exception e) {
    connctionFailed = true;
}

此代码在正常情况下正常工作。但是当没有Internet连接时(因为路由器断开连接或热点连接),httpConnection.getResponseCode()不会被执行(函数不会返回)。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

httpConnection.setConnectTimeout(5000) 是连接超时。

这不是httpConnection.getResponseCode()的暂停。

如果添加httpConnection.setReadTimeout(2000)httpConnection.getResponseCode()应在没有可用连接时抛出异常。

答案 1 :(得分:0)

你可能在更高层有一个try catch块,它正在捕获sockettimeout异常。