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.

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