【问题标题】:OkHttp and Retrofit 2 caching and offline usageOkHttp 和 Retrofit 2 缓存和离线使用
【发布时间】:2023-03-16 08:15:02
【问题描述】:

我想离线存储我的服务器响应。

这是我的代码:

        public void loadJSON() {
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(4, TimeUnit.SECONDS)
                .readTimeout(4, TimeUnit.SECONDS)
                .writeTimeout(4, TimeUnit.SECONDS)
                .build();
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Config.URL_MAIN + sid + "/")
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();

        RequestInterfacePlanGesamt request = retrofit.create(RequestInterfacePlanGesamt.class);
        Call<JSONResponsePlanGesamt> call = request.getJSON();
        call.enqueue(new Callback<JSONResponsePlanGesamt>() {
            @Override
            public void onResponse(Call<JSONResponsePlanGesamt> call, Response<JSONResponsePlanGesamt> response) {
//bla bla
}
    }

    public interface RequestInterfacePlanGesamt {
        @Headers({
                "User-Agent: android"
        })
        @GET(Config.GESAMT)
        Call<JSONResponsePlanGesamt> getJSON();
    }

如何离线使用内容?我已经阅读了一些关于缓存的文章,但我真的不知道如何实现我的内容的离线使用。

【问题讨论】:

  • 为什么要使用两个库来缓存结果?只需一个即可完成
  • @PreetikaKaur 好的,如果只有一个会更容易,没关系。但是如何缓存呢?

标签: android caching retrofit okhttp


【解决方案1】:

只需在 OkHttpClient Builder 中使用 cache() 方法:

private static final long CACHE_SIZE = 10 * 1024 * 1024;    // 10 MB

OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(4, TimeUnit.SECONDS)
                .readTimeout(4, TimeUnit.SECONDS)
                .writeTimeout(4, TimeUnit.SECONDS)
                .cache(new Cache(getApplication().getCacheDir(), CACHE_SIZE))
                .build();

【讨论】:

  • 嗯,我添加了这段代码,我开始了我的活动,我的片段开始加载内容。然后我切换片段,关闭互联网并返回到我的第一个片段,但没有缓存内容......
  • 您可能需要确认您的服务器正在发送适当的缓存标头及其响应。
  • @JesseWilson 好的,我有一个 Windows Server。 IIS 必须发送什么?
猜你喜欢
  • 2016-09-23
  • 2017-05-25
  • 2018-07-17
  • 2021-04-30
  • 2016-09-03
  • 2015-12-12
  • 2019-03-25
  • 2015-06-01
  • 1970-01-01
相关资源
最近更新 更多