我是改装新手,我想处理代码 206。
所以基本上我调用我的 rest api 并获得一个 Observable 但我不知道如何处理结果以及如何在需要时再次调用 api。
例如 :
Observable<CompanyListRest> vAllCompanyList = api.findAllCompanys1WithParams(vParamsMap);
将调用我的 api(参数是开始索引和要获取的元素数)但如何编码重复操作。
我尝试使用 onNext 添加订阅者,但它不起作用
抱歉,如果不清楚,谢谢
更新和解决方案:
我跟随阿齐姆·萨利莫夫的 znswer
Observable<Response<CompanyListRest>> vAllCompanyListResponse = api.findAllCompanys1WithParams();
vAllCompanyListResponse.subscribe(new Observer<Response<CompanyListRest>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull Response <CompanyListRest> pCompanyListRest) {
if(pCompanyListRest.code() == 206){
vAllCompanyList.addAll(pCompanyListRest.body().getCompany());
// change parameters of search
vAllCompanyListResponse.retry().subscribe(this::onNext);
} else if( pCompanyListRest.code() == 200){
return;
}
}
这工作很好!
您可以将您的CompanyListRest
回复包裹在里面,Response
如下所示:
Observable<Response<CompanyListRest>>
Response
来自改造2:
import retrofit2.Response;
所以现在您可以在onNext
方法中检查 206 的响应代码:
@Override
public void onNext(Resposne<CompanyListRest> response) {
int statusCode = response.code();
if(statusCode == 206){
//do something...
}
}
要再次调用此函数,您只需再次调用此函数即可)。我建议您拥有一个可以控制所有请求的存储库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句