2013-08-05 4 views
1

В моем приложении я загружаю данные JSON из веб-службы ReST. В большинстве случаев это прекрасно работает, однако иногда соединение будет тайм-аут.Как обрабатывать HTTP-тайм-аут?

Это код я использую, чтобы установить тайм-аут ...

HttpConnectionParams.setConnectionTimeout(httpParameters, 20000); 
HttpConnectionParams.setSoTimeout(httpParameters, 42000); 

Если соединение не будет, сбои приложений и закрывается, как мне справиться с тайм-аут?

+0

Простой блок 'try-catch' и поймать TimeOut. – user370305

+0

Тайм-аут соединения выдает «java.net.SocketTimeoutException: Socket не подключен» и тайм-аут сокета «java.net.SocketTimeoutException: время ожидания операции». поэтому попробуйте поймать –

+0

Вам нужно принять ответ VM. Это была его идея. –

ответ

4

Класс HttpClient бросает ConnectTimeoutException исключение, так что вы должны прислушиваться к нему:

try { 
     HttpResponse response = client.execute(post); 
        // do something with response 
    } catch (ConnectTimeoutException e) { 
     Log.e(TAG, "Timeout", e); 
    } catch (SocketTimeoutException e) { 
     Log.e(TAG, " Socket timeout", e); 
    } 
+0

Я пытался поймать это исключение, но оно не работает. –

+0

Исправил его, чтобы поймать оба. – VM4

1

Увеличьте время ожидания ответа, как:

HttpConnectionParams.setConnectionTimeout(httpParameters, 60000); //1 minute 
HttpConnectionParams.setSoTimeout(httpParameters, 90000); // 1.5 minute 
0

Я попытался поймать разнообразие типы исключений, я обнаружил, что захват IOException работал так, как я хотел!

+2

Это потому, что SocketTimeoutException является SubType исключения IOException. :) – VM4

+0

@VM Ах, ладно. Спасибо, очень полезно знать –

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