Обработайте ошибку 401 в прослушивателе onErrorResponse Volley

#android #android-volley

Вопрос:

Я использую Volley JsonObjectRequest для извлечения данных JSON с веб-сервера. В основном мой код выглядит так:

 JsonObjectRequest jsonRequest = new JsonObjectRequest("https://www.example.com", null, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        ...
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        if (error.networkResponse.statusCode == 401) {
            // Show toast message saying "Access unauthorized"
        } else {
            // show toast message saying "Could not fetch"
        }
    }
});
 

Если запрос завершается с ошибкой 401, всплывающее сообщение «Несанкционированный доступ» отображается, как и ожидалось. Однако, если запрос не выполняется по какой-либо причине, например, из-за отсутствия Интернета, приложение завершает работу и выдает NullPointerException сообщение «потому networkResponse что не существует error «.

Как мне правильно справиться с обеими причинами сбоя?

Ответ №1:

Вы можете справиться с этим любым из перечисленных ниже способов,

  1. Обработайте потерянный интернет-сигнал в своем приложении и перейдите на другую страницу (найдите, как работать без Интернета, доступно много статей).
  2. Окружите вызов JsonObjectRequest, попробуйте поймать и обработать исключение самостоятельно

Комментарии:

1. Хорошо, я выберу второй вариант. Спасибо.