我正在使用改造来连接到每个响应中包含唯一令牌的API。然后必须将此令牌包含在下一个请求中。这意味着我需要在发出下一个请求之前等待对请求的响应。
为了达到这个目的,是否有改进的内置机制?如果不是推荐的方法是什么?请注意,我正在使用异步改进方法和1.9版。拦截器用于读取令牌并自动将其添加到下一个请求,这非常有效。当2个请求非常接近时会出现问题,因此第二个请求最终使用过时令牌,因为第一个请求尚未返回新请求。
答案 0 :(得分:0)
我建议你将RxAndroid与Retrofit结合使用(Retrofit支持RxJava)。
通过这种方式,您可以轻松地将呼叫链接起来,例如:
webservice.getToken()
.flatMap(new Func1<Response, Observable<Response>>() {
@Override
public Observable<Response> call(Response getTokenResponse) {
String token = ... // TODO extract token.
return webservice.getDataFromWeb(token);
}
})
使用webservice.getToken()
,您将检索令牌。此调用的响应作为参数getTokenResponse
传递给flatMap-operator。在这里,您可以提取令牌,您可以使用此令牌执行第二次呼叫。
由于这是一个复杂的主题,可能需要进一步阅读,我建议以下RxAndroid链接:
https://github.com/ReactiveX/RxAndroid
https://github.com/ReactiveX/rxjava/wiki