この質問は簡単に聞こえるかもしれませんが、私は苦労しています。
私はこのように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を一緒に使用するための情報はインターネット上にありません。
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,
);