我正在使用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()(该函数不返回)。我怎样才能解决这个问题?

最佳答案

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

这不是httpConnection.getResponseCode()的超时。

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

09-11 12:43