Обработка конкретных ошибок, отправив другой запрос прозрачно в модернизации

StackOverflow https://stackoverflow.com//questions/22014958

  •  21-12-2019
  •  | 
  •  

Вопрос

Вот тот случай, когда я пытаюсь обращаться,

    .
  • Если запрос выполнен, и ответ указывает, что токен авторизации истек,
  • Отправить обновленный токен запрос
  • Если просьба обновления токена добивается успеха, повторите исходный запрос

Это должно быть прозрачным для вызывающей активности, фрагмента ... и т. Д. С точки зрения вызывающего абонента, это один запрос и один ответ.

Я добился этого потока перед тем, как при использовании OKHTTPCHINE напрямую, но я не знаю, как добиться этого в модернизации.

Может быть, что-то связанное с этим Open Если нет прямого способа достичь этого в модернизации, какой бы лучший способ реализовать его?Базовый класс слушателей?

Я использую Roboscice с модернизацией, если он может быть полезен в таком случае.

Это было полезно?

Решение

Поскольку я использую Roboscice, я закончил это сделать, создав абстрактный генеракодицетагкод.

public abstract class BaseRequestListener<T> implements RequestListener<T> {

    @Override
    public void onRequestFailure(SpiceException spiceException) {
        if (spiceException.getCause() instanceof RetrofitError) {
            RetrofitError error = (RetrofitError) spiceException.getCause();
            if (!error.isNetworkError() 
                && (error.getResponse().getStatus() == INVALID_ACCESS_TOKEN_STATUS_CODE)) {
                //I'm using EventBus to broadcast this event,
                //this eliminates need for a Context
                EventBus.getDefault().post(new Events.OnTokenExpiredEvent());
                //You may wish to forward this error to your listeners as well,
                //but I don't need that, so I'm returning here.
                return;
                }
         }
         onRequestError(spiceException);
    }

    public abstract void onRequestError(SpiceException spiceException);
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top