1

我正在尝试使用 HttpResponseCache 来启用响应缓存(用于 Web 请求)。在我的应用程序中,我使用 Loader 通过 UrlConnection 执行请求,然后将 InputStream 结果发送到 Activity 以显示图像或使用 JsonObject。在我的情况下,HttpResponseCache 使用图像的 url 并且可以在离线时显示图像但是使用 Json 的 Url,输入流结果只能在线工作,它不能在离线时显示数据。


装载机类:

public InputStream loadInBackground() {
    InputStream streamResult = null;
    HttpURLConnection conn = null;

    URL url = new URL(urlConnection);
    conn = (HttpURLConnection) url.openConnection();
    conn.setUseCaches(true);
    final InputStream finalStream = conn.getInputStream();
    streamResult = finalStream;
    ((Activity) context).runOnUiThread(new Runnable() {
        @Override
        public void run() {
            ShowData(finalStream);
        }
    });
    return streamResult;
}

活动:

@Override
public void ShowData(InputStream output) {
    if (output != null) {
            if (rbtImage.isChecked()) {
                bitmap = BitmapFactory.decodeStream(output);
            } else if (rbtJson.isChecked()) {
                try {
                    result = convertStreamToString(output);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    }
}

由 Loader 执行后,我可以通过 Image 的 Url 显示带有该位图的 Image。但离线时无法用 Json 的 Url 显示数据。

我尝试使用:addRequestProperty("Cache-Control", "only-if-cached"); “max-stale”、“max-age”、“max-age=600、私有、必须重新验证”。但没有任何工作。

请帮助我了解如何将 HttpResponseCache 与 Json 一起使用?

4

0 回答 0