gpt4 book ai didi

android - 改造正在返回缓存的响应

转载 作者:行者123 更新时间:2023-11-29 15:36:47 25 4
gpt4 key购买 nike

我在 Android 应用程序中使用 Retrofit。当我使用 token 访问 API 以获取用户信息时,它会提供缓存的(先前的)响应。每当我注销并再次登录时,API 都会提供以前的用户详细信息,我在 Postman 中测试了 API,它在那里工作正常。

我已经尝试了一些我搜索过的解决方案,但没有任何效果。

我得到的响应 header 是

Transfer-Encoding: chunked Content-Type: application/json; charset=utf-8 Server: Kestrel Date: Mon, 08 Jan 2018 09:35:26 GMT

下面是ApiClient

public class ApiClient {

public static final String BASE_URL = "http://XX.XXX.XXX.XX/api/";
private static Retrofit authRetrofit = null;
private static Retrofit retrofit = null;

public static Retrofit getClient() {

if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.build();
}
return retrofit;
}

public static Retrofit getAuthorizeClient(final String token) {

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();

Request request = original.newBuilder()
.addHeader("Authorization", "Bearer " + token)
.addHeader("Cache-control", "no-cache")
.method(original.method(), original.body())
//.cacheControl(CacheControl.FORCE_NETWORK)
.build();

return chain.proceed(request);
}
});

OkHttpClient client = httpClient.cache(null).build();

if (authRetrofit == null) {
authRetrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.client(client).build();
}
return authRetrofit;
}

}

最佳答案

在您的 httpClient 拦截器中,尝试添加缓存控制 header :

 .addHeader("Cache-control", "no-cache");

编辑

刚注意到你在 Retrofit2

original.newBuilder().header("Cache-control", "no-cache");

或者尝试将其作为注释添加到您的 API 方法中:

@Headers("Cache-control: no-cache")
Response callApi();

根据 Docs.

编辑 2

好吧,我怀疑这是因为你的 if 条件,如果条件失败,你的 authRetrofit 将不会更新。尝试删除它

if (authRetrofit == null)

帮助这有帮助。

关于android - 改造正在返回缓存的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com