Okhttp Authenticator具有多个异步API调用

时间:2016-03-22 07:58:31

标签: android authentication retrofit token okhttp

我正面临着一个带有令牌刷新系统的API。我正在使用Retrofit来获取API请求,并且我已设置Authenticator来检测何时给出Error 401并发出刷新令牌的新请求。

问题是,如果应用同时有多个请求(例如,在用户使用应用时填充ViewPager中的多个页面或Service中的API请求并导致另一个API请求),API多次响应401,因此,应用程序多次请求Authenticator

你如何解决这个问题? 我正在考虑使用Singleton boolean来检测应用程序是否正在执行令牌刷新调用,但在我看来,这并不是实现它的最佳方式。

1 个答案:

答案 0 :(得分:0)

我想说Singleton是一个好主意,但是Singleton我的意思是在api客户端对象中有一个凭证对象 - 它在对象范围内是单例,而不是整个应用程序范围。您建议执行与this answer

类似的操作
  

我会介绍要用作semafore的新对象 - 每次“刷新凭据”时都会阻止它。为了确保您只进行一次'刷新凭证'调用,您需要在与对象同步的代码块中调用它。