【发布时间】:2018-03-10 03:18:47
【问题描述】:
使用 Retrofit2(版本:2.3.0)、OkHTTP3(版本:3.9.0)和 RxJava2(版本:2.0.0)
rest api 调用场景
Observable<ServerResponse> backendService.isUserVerified("someuserName")
返回 200 Ok HTTP
如果用户被验证,预期的成功响应 JSON POJO
{
user: "someUserName",
isVerified: "yes"
}
如果用户未通过验证,则预期的成功响应 JSON POJO
{
user: "someUserName",
isVerified: "no"
}
以下是我正在尝试实现的代码
backendService.isUserVerified("someuserName")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
//Want to add a flatmap (or some other operator)
.flatmap(new Function<ServerResponse>, ObservableSource<?>>(){
@Override
public ObservableSource<?> apply(ServerResponse serverResponse) throws Exception {
if(0 != serverResponse.getisVerified.compareToIgnoreCase("yes")) {
return Observable.error(new CustomException());
}
return //current observable.
}
.retryWhen(mRetryHandler)
.subscribeWith(observer);
目的是在验证 == no 时抛出自定义异常,以便 retryWhen() 操作员可以参与重复调用链,否则希望通过链继续直到 subscribe()。
任何指针/帮助?
【问题讨论】:
-
你能解释更多你想要做什么吗?你想用你想继续的替换
ObservableResource<?>? -
Yes ObservableSource 用于错误和失败场景...
标签: retrofit rx-java retrofit2 rx-android rx-java2