Отложить повторную установку - PullRequest
0 голосов
/ 04 марта 2019

В моем приложении есть следующий сценарий:

  1. Я делаю http-запрос (Rq) к конечной точке, которая требует действительный токен;Я получаю ошибку 401;
  2. Как советовали по различным вопросам SO, я реализовал обновление токена с помощью класса Authenticator.
  3. Дело в нашем бэкенде, пока нет конечной точки (пока) для обновления конечной точки, эта "свежая"«токен предоставляется только после повторного входа пользователя в систему.
  4. Итак, обнаружив ошибку 401, я извлекаю информацию о входе в систему, хранящуюся локально (скажем, в моих общих настройках), делаю запрос к конечной точке для входа в систему
  5. Если запрос выполнен успешно, я получаю новый токен и в обычном порядке выполняю запрос (Rq), который не прошел.
  6. Но если через некоторое время происходит сбой входа в систему (скажем, из-за данных, прочитанных из SP)были неверны, например ...), идея состоит в том, чтобы отобразить пользовательский интерфейс входа в систему.Пользователь заполняет форму входа и делает и пытается войти снова.
  7. Если вход успешный, я хотел бы возобновить запрос (Rq), который не удался.Каков наилучший возможный подход?

NB: У нас есть обратные вызовы повсюду ... так что сейчас нет ни RxJava, ни Kotlin:)

1 Ответ

0 голосов
/ 04 марта 2019

используйте комбинацию Rx2 и Retrofit, тогда вы легко добьетесь этого, она будет выглядеть примерно так:

service.login(username, password)
            .retry(RETRY_FETCH_COUNT)
            .onErrorResumeNext {
                return@onErrorResumeNext doSomethingElse()
            }
            .observeOn(uiScheduler)
            .subscribe({ loginResponse ->
               handleLogin(loginResponse)
            }, {
                onLoginError()
            })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...