web-dev-qa-db-ja.com

RxJava 2 + Retrofit2でPOST)する方法は?

この質問は簡単に聞こえるかもしれませんが、私は苦労しています。

私はこのようにretrofit2で投稿を行うことができます:

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.");
                }

            }
        });

これをRxJava2に変換するにはどうすればよいですか?私はすでにコンバータファクトリを実装しましたが、rxJava2とretrofit2を一緒に使用するための情報はインターネット上にありません。

7

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,
);
6
Paresh P.