【发布时间】:2021-09-02 03:13:39
【问题描述】:
该项目使用 OAuth2 协议。但是请求正文中有令牌,而不是标题。所以我找不到用新令牌再次发送请求的方法。 流程:请求 -> 失败 -> 刷新令牌 -> 请求
请求经验:
{“请求”:“asd”,
“令牌”:“...”,
“请求数据”:{} }
发生错误时,我正在使用相同的令牌发送相同的请求,如下所示:
requestExp().flatMap(resource -> {
return Single.just(new Object());
}).retryWhen(th-> {
AtomicInteger counter = new AtomicInteger();
return th.takeWhile(e -> {
if (Objects.equals(e.getMessage(), "test")) {
return counter.getAndIncrement() != 1;
}
});
});
有什么帮助吗?
【问题讨论】:
-
你在使用retrofit/okhttp吗?如果是,您可以为客户端设置身份验证器。当您收到错误 401 时,将调用身份验证器。在身份验证器中,您可以获得新令牌,然后将其添加到您的响应正文中。
-
@DominikSetniewski 身份验证器可以将令牌添加到请求正文吗?你能展示样品吗?感谢您的提前
-
我相信这是可能的,但看起来很糟糕。:/
标签: android oauth-2.0 rx-java token refresh-token