有没有办法在OkHttp中手动将内容插入响应缓存?

时间:2014-09-05 14:22:44

标签: okhttp

我的应用程序目前正在单个响应中下载聚合内容,但有时它还需要通过各自的uris获取该响应的元素。

我希望能够将聚合响应中的每个元素保存到其各个uri下的缓存中,以便在请求时,应用程序不需要访问网络。

有没有办法用OkHttp实现这个目标?

1 个答案:

答案 0 :(得分:0)

以下似乎有效。

        String json = encoder.writeValueAsString(object);
        Request newRequest = new Request.Builder().url(url).build();
        ResponseBody body = ResponseBody
                .create(MediaType.parse("application/json"), json);
        Response resp = new Response.Builder().body(body)
                .request(newRequest).code(200).protocol(HTTP_1_1)
                .header("content-type", "application/json")
                .message("OK").body(body)
                .networkResponse(new Response.Builder().code(200)
                        .request(newRequest).protocol(HTTP_1_1)
                        .header("content-type", "application/json")
                        .message("OK").build())
                .build();
        Sink cacheSink = getOk().cache().put$okhttp(resp).body();
        cacheSink.write(resp.body().source().getBuffer(),
                json.getBytes().length);
        cacheSink.close();

请参见Is manually inserting data into okhttp cache safe?