这个问题可能听起来很简单,但我很难过。
我可以通过这种方式进行改造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的信息。
答案 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,
);