Android RxJava2 API错误处理
我不熟悉Android RxJava2 API错误处理,android,api,retrofit2,rx-java2,Android,Api,Retrofit2,Rx Java2,我不熟悉RxJava 我们使用2+RxJava2调用API 我有以下情况- 1。调用购物车API 2.如果购物车API失败,我需要调用登录API 3.登录API成功后,我需要再次调用Cart API 登录成功时调用{API}->{API}失败->调用登录API-> API->调用{API} 像这样,如果任何API失败,我需要调用登录API,然后调用失败的API 处理这个问题的最佳方法是什么。您可以这样做: api.processCart() .retryWhen(errors ->
RxJava
我们使用2+RxJava2
调用API
我有以下情况-
1。调用购物车API2.如果购物车API失败,我需要调用登录API
3.登录API成功后,我需要再次调用Cart API 登录成功时调用{API}->{API}失败->调用登录API-> API->调用{API} 像这样,如果任何API失败,我需要调用登录API,然后调用失败的API
处理这个问题的最佳方法是什么。您可以这样做:
api.processCart()
.retryWhen(errors -> errors
.filter(it -> it == LOGIN_ERROR)
.flatMap(api.login())
请注意,如果您不小心,这可能会创建一个永无止境的循环。您可以在retryWhen
处理程序中插入所需的任何逻辑。如示例中所示,您可以检查错误的类型,并决定是否需要重新登录或执行其他操作
但是,如果您需要对每个api调用都执行此操作,那么值得一看Fred的评论。听起来您想刷新登录令牌/会话。如果是这种情况,可能值得研究OkHttp认证器api,或者如果您不能使用它,那么可能需要使用拦截器。