我在一个项目中使用 Spring for Android,我需要管理 cookie 存储/管理器。我可以使用 的实现向任何请求添加 cookie ClientHttpRequestInterceptor
,但我想在发送请求时删除其中的一些。
更具体地说,我面临的问题是,对于 Froyo,特定于Spring
(with DefaultHttpClient
) 的实现会自动将来自的 cookie 添加到标头CookieStore
- 即使我明确设置标头。但我想自己管理这些 cookie(删除其中的一些,或更新它们的值)。虽然对于上面的 Gingerbread (Spring
实现完成HttpURLConnection
),cookie 仅在我自己做时才添加 - 但是我不确定,因为我没有看到 Spring 设置任何内容CookieHandler
,但最重要的是我没有看到它们执行请求时,或者我可以看到它们已更新。所以这个问题更具体到 Froyo。
解决方法是重置连接工厂;就像是:
protected void resetCookieStoreForTemplate(RestTemplate template) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO) {
template.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
}
}
在下面,这似乎重新创建了 DefaultHttpClient 并将使用新的CookieStore
. 但这在我看来有点难看。
最后,我的问题是:是否Spring for Android
提供了一些方法来公开一些用于 Cookie 管理的 API?就像RestTemplate为连接、连接工厂、消息转换器等公开一些抽象一样,我很乐意为 cookie 管理提供一些抽象。