Как обнаружить 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
типы.