对于不同的X Auth Tokens,OkHttp Request返回缓存结果

时间:2017-01-24 10:44:07

标签: android caching retrofit okhttp okhttp3

我正在使用Android应用,我正在使用Retrofit与其他API进行通信。 此API提供登录,以获取X Auth Tokens。 我有一个拦截器来为每个请求设置这个标记,如下所示:

@Override
    public void intercept(RequestFacade request) {
        request.addHeader("X-Auth-SOFTTOKEN", softToken);
        request.addHeader("X-Auth-HARDTOKEN", hardToken);
        request.addHeader("X-Auth-USER", username);
    }

我可以观察到一个奇怪的行为,我得到旧用户的缓存响应,虽然X Auth Tokens是不同的,我应该得到新登录用户的响应。

如果我将这段代码添加到我的其余API接口方法中,它可以正常工作。

@Headers("Cache-Control: no-cache")

如果这是预期的行为,我无法找到任何提示。如果请求完全相同,我认为缓存只应该触发。

1 个答案:

答案 0 :(得分:2)

看一下这个答案:https://stackoverflow.com/a/35993722/3964585并从那里开始http RFC - https://tools.ietf.org/html/rfc7231#section-7.1.4

简而言之 - 当服务器用" Vary"表示时,缓存必须考虑标题。头。服务器的替代方法是使用Cache-control header指令。

似乎在您的情况下服务器返回错误的响应。如果可以,请修复此问题,否则就无法使用http缓存。