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

min*_*dus 6 android web-services httpurlconnection ws-client android-webservice

我使用a 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;
}
Run Code Online (Sandbox Code Playgroud)

此代码在正常条件下正常工作.但是当没有Internet连接时(因为路由器断开连接或者没有热点),httpConnection.getResponseCode()没有执行(函数不返回).我怎样才能解决这个问题?

ilk*_*tas 6

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

这不是暂停httpConnection.getResponseCode().

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


Aun*_*Aun 0

您可能在更高层有一个 try catch 块,它正在捕获套接字超时异常。