我正在尝试使用retrofit和rxjava 2进行webservie调用 . 我正在探索两种不同的方法来使用RxJava2 . 问题是我得到回应,我使用 Observable
但它不适用于 Flowable
. 使用 Flowable
时我没有打印日志我尝试调试它但它不会进入 onNext
或 onComplete
或 onError
. 只有 onSubscribe
被执行 .
1)使用observable作为返回类型
new WebRequestManager().getContactObservable(userRequest)
.subscribe(new Observer<ResponseData>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ResponseData responseData) {
Log.e(TAG , "data "+responseData.getStatus());
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
Log.e(TAG , "data complete");
}
}
);
2)使用flowable作为返回类型
new WebRequestManager().getContactFlowable(userRequest)
.subscribe(new Subscriber<ResponseData>() {
@Override
public void onSubscribe(Subscription s) {
Log.e(TAG , "contact subscription ");
}
@Override
public void onNext(ResponseData responses) {
Log.e(TAG , "contact onNext ");
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
Log.e(TAG , "contact onComplete ");
}
});
休息联系改造api
public interface ContactApi {
@POST(WebRequest.GET_CONTACTS)
Flowable<ResponseData> getContactFlowable(@Body UserRequest userRequest);
@POST(WebRequest.GET_CONTACTS)
Observable<ResponseData> getContactObservable(@Body UserRequest userRequest);
}
打电话给webservice
public Flowable<ResponseData> getContactsData(UserRequest userRequest){
return webRequest.getWebClient().create(ContactApi.class).getContacts(userRequest);
}
public Observable<ResponseData> getContact(UserRequest userRequest){
return webRequest.getWebClient().create(ContactApi.class).getContact(userRequest);
}
获得改造实例
public static Retrofit getWebClient(){
//if(okHttpClient == null)
okHttpClient = new OkHttpClient.Builder()
.connectTimeout(120,TimeUnit.SECONDS)
.readTimeout(120,TimeUnit.SECONDS)
.writeTimeout(120,TimeUnit.SECONDS)
.addInterceptor(new WebRequestInterceptor("\"application/json\""))
.build();
// if(client == null)
client = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(LoganSquareConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
return client;
}
1 回答
使用
Subscriber
s,您必须调用request
来获取项目:另见DisposableSubscriber及其示例 .