Retrofit2 + RxJava2可用于HTTPs请求

时间:2017-09-12 12:56:07

标签: android retrofit2 rx-java2

现在我试图了解如何将RxJava2库与Retrofit2一起使用。

我的Api服务:

public interface ApiService {

    @GET
    Observable<String> getObservable(@Url String url);

    @GET
    Flowable<String> getFlowable(@Url String url);
}

和主要活动:

mApiService.getObservable("https://google.com")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeWith(new DisposableObserver<String>() {
                    @Override
                    public void onNext(@NonNull String s) {
                        Log.d(TAG,"onNextObservable");
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {
                       Log.d(TAG,"onErrorObservable");
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG,"onCompleteObservable");
                    }
                });


mApiService.getFlowable("https://google.com")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeWith(new FlowableSubscriber<String>() {
            @Override
            public void onSubscribe(@NonNull Subscription s) {
                Log.d(TAG,"onSubscribeFlowable");
            }

            @Override
            public void onNext(String s) {
                Log.d(TAG,"onNextFlowable");

            }

            @Override
            public void onError(Throwable t) {
                Log.d(TAG,"onErrorFlowable");
            }

            @Override
            public void onComplete() {
                Log.d(TAG,"onCompleteFlowable");
            }
        });

在我的日志中,我看到:

  • onNextObservable
  • onSubscribeFlowable
  • onCompleteObservable

为什么我看不到onNextFlowable?我无法得到Flowable的回复。也许有一种更紧凑的编写代码的方法?

1 个答案:

答案 0 :(得分:1)

调用网址只返回一个结果或失败(更像SingleMaybe)。 Observable也可以。但Flowable在这里没有表现出来。

无论如何,请尝试在s.request(1)的{​​{1}}中添加onSubscribe(...)

Flowable有“背压”的概念。您必须询问以获取数据。