Могу ли я остановить HTTPResponseCache, работая как общий кэш в отношении заголовков Cache-Control?

Я пытаюсь использовать встроенный HTTPResponseCache в своем приложении (делая запросы через HTTPURLConnection API), но у HTTPURLConnection проблемы с попыткой заставить его кэшировать любые ответы, которые были запрошены с включенным заголовком Authorization .

Единственный способ, которым я могу заставить его кэшировать ответ, – это явно включить «public» в заголовок ответа Cache-Control на сервере ( s-maxage может работать тоже, не пробовал, но явно помещал private результаты в нет кэширование); Но это будет означать, что любые промежуточные прокси будут кэшировать ответ, чтобы обслуживать других клиентов, чего я не хочу.

Я понимаю, что кеш-клиент пользователя кэширует ответы, запрашиваемые с заголовками Authorization по умолчанию или с private заголовком. Кажется, что HTTPResponseCache действует как общий кэш в том, как он интерпретирует заголовки, а не кеш- HTTPResponseCache пользователя. Или мое понимание стандартов кеширования неверно?

Есть ли способ заставить кеш действовать как кеш HTTP-агента пользователя?

Это в моем установочном коде:

 public static void setupCache(Context context, long httpCacheSize){ File httpCacheDir = new File(context.getCacheDir(),"http"); HttpResponseCache.install(httpCacheDir, httpCacheSize); } 

Мне нужно сделать что-то другое здесь? Или, возможно, мне нужно включить некоторые данные агента пользователя в мои запросы?

    Пока я не нашел решения этой конкретной проблемы, я работал над своей проблемой, рефакторинг моего кода HTTP-клиента, чтобы использовать Volley ( http://developer.android.com/training/volley/index.html ), а не HTTPURLConnection. Кэширующие объекты в Volley реализованы отдельно для HTTPResponseCache и реализуют обработку заголовков управления кешем, как и ожидалось для кеша пользовательского агента.