Когда я обращаюсь к api api api api возвращает 204 - Нет содержимого. Но залп не признает этого и дает TimeOutError.Как обнаружить 204 Нет содержимого с Android Volley Request
Как я могу справиться с этим?
Когда я обращаюсь к api api api api возвращает 204 - Нет содержимого. Но залп не признает этого и дает TimeOutError.Как обнаружить 204 Нет содержимого с Android Volley Request
Как я могу справиться с этим?
При настройке нового запроса залп:
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
с соответствующей информацией об ошибке, переданной ему.
Таким образом, в этом обратном вызове вы должны проверить наличие ошибки и предпринять соответствующие действия.
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
других типов.
Прежде всего спасибо за четко определенный ответ. Я так понимаю, но эта методология ошибочна, я думаю. Потому что, если на самом деле происходит тайм-соединение, я пропущу его. Эта логика делает это; исключение таймаута -> нет содержания нет содержания -> нет содержания – Arda
О, я понимаю сейчас. 'Volley' неправильно интерпретирует 204 для' TimeoutError'. Дурак я! Я совершенно неправильно понял это. – Karthiksrndrn
Возможный дубликат. Проверьте [этот выход] (http://stackoverflow.com/questions/27392813/android-volley-library-not-working-with-204-and-empty-body-response) – Karthiksrndrn
Отметьте это сообщение: http://stackoverflow.com/a/21968409/1281775 – Seishin