Ошибка компиляции RxJava2 "не удается найти метод символа body()"

Я получил ошибку компиляции в этой части кода

mCompositeDisposable.add(
            Flowable.just(Boolean.TRUE)
                .flatMap( ignored ->
                        service.getPosts(offset,limit, PreferencesUtils.getAccessTokenKey()) )
                .subscribeOn(Schedulers.io())
                .doOnNext(response -> {
                    if (!response.isSuccessful()) throw new IllegalAccessException();
                })
                .retryWhen( error -> error.flatMap( f -> {
                    if(f instanceof IllegalAccessException)
                        return Helper.refreshToken();
                    else 
                        return Flowable.error(f);
                }))
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(
                        successResponse -> {
                            if (!successResponse.body().isEmpty()) {
                                mView.showNewsFeedItems(successResponse.body());
                            }
                        },
                        failResponse -> { mView.showError(); }
            ));

Эта строка кода IDE хорошо распознается и не выдает никаких исключений или предупреждений. SuccessResponse имеет тип Response<List<Object>> но компилятор не думает так хорошо и дает мне error: cannot find symbol method body() Я не могу найти одинаковые вопросы и ответы, как решить эту проблему. Буду очень признателен за любую информацию по этой проблеме!

if (!successResponse.body().isEmpty()) { mView.showNewsFeedItems(successResponse.body()); }

Обновить:

Все отлично работает, когда я использую Observer (с Observable), но это дорого

 .subscribe(new Observer<Response<List<NewsFeed>>>() { // lambda doesnt work properly here (in progress)
                @Override public void onSubscribe(Disposable s) {}
                @Override public void onNext(Response<List<NewsFeed>> feeds) {if(!feeds.body().isEmpty()) mView.showNewsFeedItems(feeds.body());}
                @Override public void onError(Throwable e) {}
                @Override public void onComplete() {}
            });

1 ответ

Попробуйте использовать Single.just(), если вам нужна эта эмиссия. Это вернет вам Disposable, который можно добавить в CompositeDisposable. Подпишитесь на текучую возвратную подписку, а не одноразовую

Другие вопросы по тегам