Как обнаружить 204 нет контента из Android Volley Request

Когда я запрашиваю к моему api, api возвращает 204 - Нет контента. Но залп не признает этого и выдает TimeOutError.

Как я могу справиться с этим?

1 ответ

Когда вы устанавливаете новый запрос залпа:

StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
        new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
        // act upon a valid response
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        // Handle error
        }
    });

Обратите внимание, что вы передаете Response.ErrorListener, Когда возникает ошибка, такая как, например, 204, onErrorResponse(VolleyError) обратный вызов вызывается с VolleyError instance - ошибка с соответствующей информацией об ошибке, переданной ей.

Поэтому в этом обратном вызове вы должны проверить на наличие ошибок и предпринять соответствующие действия.

new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            if(error instanceof TimeoutError){
             // Take action when timeout happens
            }
        }
    }

ПРИМЕЧАНИЕ. По истечении времени ожидания VolleyError Экземпляр на самом деле является примером TimeoutError подкласс VolleyError, Поэтому мы проверяем, является ли ошибка вызванной тайм-аутом, используя instanceof

Список подклассов VolleyError доступен здесь: http://afzaln.com/volley/com/android/volley/VolleyError.html

Пример приведен для StringRequest типа, но техника та же для других VolleyObjectRequest типы.

Другие вопросы по тегам