2016-07-04 5 views
-5

я следующий метод:Как я могу получить код состояния HTTP, используя OkHttp, когда нет связи?

Response httpResponse = client.newCall(request).execute(); 
httpResponse.code(); 

Но в некоторых случаях (например, когда я отключаю телефонную сеть, доступ к Google из Китая или сервер не работает), он дает мне IOException вместо ошибки код.

Как я могу получить весь код статуса HTTP, например, Volley?

+0

Не будет http-status-code в случае отключенной сети или полного отказа сервера, потому что код состояния отправляется ** сервером **. –

+0

спасибо, я допустил ошибку. –

ответ

0

Вы не получите код состояния в этой ситуации. Прочитайте documentation:

Response execute() throws IOException

Запускает запрос немедленно, и блоки, пока ответ не может быть обработан или по ошибке. Вызывающий может считывать тело ответа с помощью метода ответа Response.body. Чтобы избежать утечки ресурсов, вызывающие абоненты должны закрыть тело ответа.

Обратите внимание, что успешность транспортного уровня (получение кода ответа HTTP, заголовков и тела) необязательно указывает на успех на уровне приложения: ответ может по-прежнему указывать на недопустимый код ответа HTTP, такой как или 500.

Броски:

  • IOException: если запрос не может быть выполнен из-за отмены, проблема подключения или тайм-аут. Поскольку сети могут терпеть неудачу во время обмена, возможно, что удаленный сервер принял запрос до сбоя.

  • IllegalStateException: когда звонок уже выполнен.

An IOException, как ожидается, если запрос не может быть выполнен из-за проблемой подключения.