Retrofit 2.5.0 не выполняет запрос после третьего раза - PullRequest
0 голосов
/ 03 января 2019

У меня есть следующий код,

@Singleton
class LoginHandler {
    private Observable<Response<User>> loginObservable;

    private void attemptLogin(LoginRequest loginRequest) {
        LoginSubscriber loginSubscriber = new LoginSubscriber();

        loginObservable = api.login(loginRequest);
        loginObservable
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe(loginSubscriber);
    }
}

с

@POST(PATH_AUTH)
Observable<Response<User>> login(@Body LoginRequest loginRequest);

Это выполняется каждый раз, когда пользователь хочет войти по глубокой ссылке.

Я могу войти и выйти два раза, но в третий раз запрос просто не выполняется. Я также проверил с помощью инструмента Charles Proxy, действительно ли запрос отправлен, но там ничего не было видно. Регистрация объекта loginObservable показывает, что каждый вызов api.login() возвращает различный объект Observable, который является правильным для подписки, которая будет выполнена. Запись в doOnSubscribe(() -> ...) также выполняется, но не сам запрос. Я просмотрел SO, и единственное решение, которое я нашел, было добавить timeout(...), чтобы пользователь мог вернуться к маске входа в систему, как только истечет время ожидания. Однако при попытке войти в систему проблема все еще присутствует.

Итак, мой вопрос: как я могу отладить это и выяснить, что происходит под капотом модернизации и почему запрос не выполняется после третьей попытки?

Заранее большое спасибо

...