6

Я использую HttpURLConnection, чтобы проверить, доступен ли URL сервера или не используя следующий код:HttpURLConnection getResponseCode() ДУС не возвращается, если нет подключения к Интернету

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; 
} 

Этот код под работает нормально нормальные условия. Но когда нет подключения к Интернету (поскольку либо маршрутизатор отключен, либо нет точки доступа), httpConnection.getResponseCode() не выполняется (функция не возвращается). Как я могу это исправить?

+0

Попробуйте добавить фрагмент кода в 'TRY CATCH Block'. То, что я подозреваю, является '(HttpURLConnection) knownURL.openConnection();' вызывает исключение сокета, когда нет Интернета, поэтому вы не достигаете 'httpConnection.getResponseCode();' –

+0

knownURL.openConnection() выполняется, и это не придет, чтобы поймать блок. Когда вы вызываете getResponseCode() – mindus

+0

, попробуйте отладить его. И да, вы получаете исключение. Вот почему. Возможно, проверьте свой лог-код и разместите здесь. – Darpan

ответ

0

Возможно, у вас есть блок catch try на более высоком уровне, который захватывает исключение sockettimeout.

+0

попробовал, что все еще не придет, чтобы поймать блок. – mindus

4

httpConnection.setConnectTimeout(5000) - это таймаут для связи.

Это не перерыв для httpConnection.getResponseCode().

Если вы добавите httpConnection.setReadTimeout(2000), httpConnection.getResponseCode() должен исключить исключение, если соединение отсутствует.

+0

Кажется, что это должно приводить к тому, что getResponseCode() начинает метать TimeOutExceptions. Сделал это? У меня есть аналогичная проблема, и я ищу простое решение, без необходимости самостоятельно программировать таймауты. –

+0

Это должно быть принятое решение –

Смежные вопросы