如何使用RxJava 2 + Retrofit 2进行发布?

时间:2018-01-08 09:59:37

标签: android rx-java retrofit2 rx-java2

这个问题可能听起来很简单,但我很难过。

我可以通过这种方式进行改造2:

class RetrofitClient {

    private static Retrofit retrofit = null;

    static Retrofit getClient(String baseUrl) {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }

}

Api服务界面:

 @POST("postsInit")
    @FormUrlEncoded
    Call<InitPost> postInit(
            @Field("appVersion") String versionName,
            @Field("appId") String applicationId,

    );

最后:

apiService.postInit(versionName, applicationId).enqueue(new Callback<InitPost>() {
            @Override
            public void onResponse(@NonNull Call<InitPost> call, @NonNull Response<InitPost> response) {

                if (response.isSuccessful()) {
                    Timber.d("post submitted to API");
                    getInitResponse();
                }
            }

            @Override
            public void onFailure(@NonNull Call<InitPost> call, @NonNull Throwable t) {

                if (call.isCanceled()) {
                    Timber.e("Request was aborted");
                } else {
                    Timber.e("Unable to submit post to API.");
                }

            }
        });

如何将其转换为RxJava 2?我已经实施了转换器工厂,但互联网上没有关于使用rxJava 2和改装2的信息。

1 个答案:

答案 0 :(得分:5)

使用RxJava代码转换您的电话: -

apiService.postInit(versionName, applicationId)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .unsubscribeOn(Schedulers.io())
            .subscribe(new Subscriber<InitPost>() {
                @Override
                public void onSubscribe(Subscription s) {

                }

                @Override
                public void onNext(InitPost initPost) {

                }

                @Override
                public void onError(Throwable t) {

                }

                @Override
                public void onComplete() {

                }
            });
}

邮政服务界面:

@POST("postsInit")
@FormUrlEncoded
Observable<InitPost> postInit(
        @Field("appVersion") String versionName,
        @Field("appId") String applicationId,
);