Android 将响应返回为可流动时,未调用onComplete
我正在尝试使用改型和RxJava2进行WebService调用。我正在探索使用RxJava2的两种不同方法。问题是,当我使用Android 将响应返回为可流动时,未调用onComplete,android,rx-java,retrofit2,rx-java2,Android,Rx Java,Retrofit2,Rx Java2,我正在尝试使用改型和RxJava2进行WebService调用。我正在探索使用RxJava2的两种不同方法。问题是,当我使用可观察的时,我得到了响应,但它不使用可流动的。使用Flowable时未打印日志我试图调试它,但它没有进入onNext或onComplete或onError。仅执行订阅上的onSubscribe 1) 使用可观察作为返回类型 new WebRequestManager().getContactObservable(userRequest) .subscribe(
可观察的时,我得到了响应,但它不使用可流动的。使用Flowable
时未打印日志我试图调试它,但它没有进入onNext
或onComplete
或onError
。仅执行订阅上的onSubscribe
1) 使用可观察作为返回类型
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");
}
}
);
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 ");
}
});
使用Subscriber
s,您必须呼叫request
以获取项目:
new WebRequestManager().getContactFlowable(userRequest)
.subscribe(新订户(){
@凌驾
认购的公共无效(认购){
Log.e(标签“联系人订阅”);
s、 request(Long.MAX_VALUE);//请参阅和。您能提供一些相关示例,说明如何与publisher一起使用flowable吗?这很有效!!!您是RxJava的专家,看到您的个人资料后,您能帮助我提高RxJava的技能吗..路线图或其他阅读资料。
public interface ContactApi {
@POST(WebRequest.GET_CONTACTS)
Flowable<ResponseData> getContactFlowable(@Body UserRequest userRequest);
@POST(WebRequest.GET_CONTACTS)
Observable<ResponseData> getContactObservable(@Body UserRequest userRequest);
}
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;
}