Android: Loopj AsyncHttpClient Получить код ошибки HTTP
Я использую AsyncHttpClient от Loopj для выполнения http-запросов с данными JSON. Теперь мне нужно получить код ошибки http, который возвращается с сервера. Где я могу найти это? Обработчик, который я передаю, выглядит так:
new JsonHttpResponseHandler()
{
@Override
public void onFailure(Throwable throwable, JSONObject object)
{
// Get error code
}
}
Это вообще невозможно?
2 ответа
Решение
Попробуй это:
HttpResponseException hre = (HttpResponseException) throwable;
int statusCode = hre.getStatusCode();
Это должно работать только для кода состояния>= 300, потому что следующий код в классе AysncHttpResponseHandler в loopj
if(status.getStatusCode() >= 300) {
sendFailureMessage(new HttpResponseException(status.getStatusCode(), status.getReasonPhrase()), responseBody);
}
Посмотрите на client.post(null, url, entity, application/json, responseHandler);
Объявите метод, как указано ниже, и вы получите код состояния
RestClientAvaal.post(url, entity, new BaseJsonHttpResponseHandler<>() {
@Override
public void onSuccess(int statusCode, Header[] headers, String rawJsonResponse, Object response) {
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, String rawJsonData, Object errorResponse) {
}
@Override
protected Object parseResponse(String rawJsonData, boolean isFailure) throws Throwable {
return null;
}
});
И если вы хотите получить сообщение об исключении, попробуйте новое Exception(throwable).getMessage() в методе onFailure.