java - 如何在 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;
}
}
这工作很好!
解决方案
您可以像下面这样将您的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...
}
}
要再次调用此函数,您只需再次调用此函数)。我建议您拥有一个可以控制所有请求的存储库。
推荐阅读
- javascript - 在Javascript中,有没有一种多态设置器的方法
- visual-studio - Visual Studio 从另一个文件打开类的文件
- sql - 我有两列,我想将两者结合起来,而不是通过 concat 仅结合另一行下方的一行
- python - 使用 sqlalchemy 查询远程数据库后 SSHTunnelForwarder 未结束
- node.js - 如何从客户端向服务器发出异步请求?
- vue.js - 将集合复制出 vuex 状态以防止突变是标准的吗?
- javascript - 为什么 FormData 使用 fetch API 会导致我的屏幕刷新?
- azure-information-protection - 在服务/守护程序应用程序中使用 MIP SDK 保护文件时出错
- python - 从 tkinter 子窗口获取变量
- python - 颠簸版本和同时构建?