2017-01-24 11 views
1

Я работаю над Android-приложением, где я использую Retrofit для связи с API-интерфейсом для отдыха. Этот API предоставляет логин, чтобы получить X Auth Tokens. У меня есть перехватчик, чтобы установить это маркеры для каждого запроса, как это:OkHttp Request возвращает кешированный результат для разных 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); 
    } 

я могу наблюдать странное поведение, где я получаю Cached ответы для старого пользователя, хотя X аутентификации токены различны и я должен получить ответ для нового зарегистрированного пользователя.

Если я добавлю этот фрагмент кода в мои методы интерфейса API остального, он работает.

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

Я не могу найти никаких намеков, если это ожидаемое поведение или нет. Я думал, что кеш должен срабатывать только, если запрос точно такой же.

ответ

2

Посмотрите на этот ответ: https://stackoverflow.com/a/35993722/3964585 и оттуда также HTTP RFC - https://tools.ietf.org/html/rfc7231#section-7.1.4

Короче - кэши должны принимать заголовки во внимание, когда сервер указывает на это с «Варах» заголовок. Альтернативным способом для сервера является использование директив заголовка Cache-control.

Кажется, что в вашем случае сервер возвращает неправильные ответы. Если это возможно, исправьте это, если вы не можете использовать кеш http.