首页 > 解决方案 > 如何在 android 中通过改造处理 206 代码?

问题描述

我是改装新手,我想处理代码 206。

所以基本上我调用我的rest api并获得一个 Observable 但我不知道如何处理结果以及如何在需要时再次调用 api。

例如 :

Observable<CompanyListRest> vAllCompanyList = api.findAllCompanys1WithParams(vParamsMap);

将调用我的 api(参数是开始索引和要获取的元素数量),但如何编写重复操作。

我尝试使用 onNext 添加订阅者,但它不起作用

如果不清楚,请见谅,谢谢

更新和解决方案:

我跟随 Azim Salimov 的 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;
                }

            }

这工作很好!

标签: javaandroidretrofit

解决方案


您可以像下面这样将您的CompanyListRest回复包装在里面Response

Observable<Response<CompanyListRest>>

Response来自改造2:

import retrofit2.Response;

所以现在您可以在方法中检查 206 的响应代码onNext

@Override 
public void onNext(Resposne<CompanyListRest> response) {
   int statusCode = response.code();
   if(statusCode == 206){
      //do something...
   }
}

要再次调用此函数,您只需再次调用此函数)。我建议您拥有一个可以控制所有请求的存储库。


推荐阅读