Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RxJava2 API错误处理_Android_Api_Retrofit2_Rx Java2 - Fatal编程技术网

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。调用购物车API
2.如果购物车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,或者如果您不能使用它,那么可能需要使用拦截器。