1

HttpResponseCache を使用して、応答キャッシュ (Web 要求用) を有効にしようとしています。私のアプリケーションでは、ローダーを使用して UrlConnection でリクエストを実行し、InputStream の結果をアクティビティに送信して、画像を表示したり、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();
                }
            }
    }
}

ローダーによって実行された後、イメージの URL によってそのビットマップでイメージを表示できます。ただし、オフラインの場合、Json の URL でデータを表示することはできません。

私は with:addRequestProperty("Cache-Control", "only-if-cached"); を使用しようとしています。「max-stale」、「max-age」、「max-age=600、非公開、再検証が必要」。しかし、何も機能しません。

JsonでHttpResponseCacheを使用する方法を教えてください。

4

0 に答える 0