Обработка конкретных ошибок, отправив другой запрос прозрачно в модернизации
Вопрос
Вот тот случай, когда я пытаюсь обращаться,
- .
- Если запрос выполнен, и ответ указывает, что токен авторизации истек,
- Отправить обновленный токен запрос
- Если просьба обновления токена добивается успеха, повторите исходный запрос
Это должно быть прозрачным для вызывающей активности, фрагмента ... и т. Д. С точки зрения вызывающего абонента, это один запрос и один ответ.
Я добился этого потока перед тем, как при использовании 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);
}
. Не связан с StackOverflow