дооснащения 2,0 переместил ErrorHandler и с использованием нового Callback
, который включает в себя два метода:
/** Successful HTTP response. */
public void onResponse(Response<T> response, Retrofit retrofit)````
/** Invoked when a network or unexpected exception occurred during the HTTP request. */
public void onFailure(Throwable t)
Retrofit2.x будет получать весь ответ HTTP в onResponse
, даже если код HTTP не 2xx или 3xx, здесь вам необходимо проверить код состояния ответа в вашем методе onResponse
и проверить, соответствует ли ответ ответа ответа (обычно 2xx или 3xx) и выполняет правильную логическую обработку.
Я модернизировал retrofit2.x и мое решение о централизованной обработке ошибки: Создания абстрактного класса, который расширяет Retrofit.Callback с двумя методами OnSuccess и OnFailed, то OnFailed не абстрактно, так как я всегда делаю один и тот же процесс, когда бизнес-логика потерпела неудачу и сделала другую вещь, когда запрос был успешным. Вы можете передать образец кода here
тогда, когда вам нужно отправить запрос HTTP, вы должны реализовать OnSuccess метод, и вы также можете переопределить OnFailed метод в некоторых случаях, как я уже говорил в моем проекте, я обрабатываю в большинстве случаев это не удалось. Вы можете обратиться к примеру here, который я использовал retrofit2 для отправки запроса на отправку.
Надеюсь, это может вам помочь!
Имейте в виду, что onFailing также будет срабатывать, если имеется ошибка синтаксического анализа, но тогда вы не будете иметь доступ к телу ответа, чтобы попытаться восстановить ошибку. –
Добрый день. Что такое метод responseBodyConverter? –
@AlexeiKorshun взгляните на [здесь] (https://futurestud.io/blog/retrofit-getting-started-and-android-client) – Amir