我在一个项目中使用Spring for Android,我需要管理cookie商店/经理。我可以通过使用ClientHttpRequestInterceptor
的实现向任何请求添加cookie,但我希望在发送请求时删除其中一些cookie。
更具体地说,我面临的问题是,对于Froyo,在Spring
中特定的实现(带有DefaultHttpClient
)会自动将来自CookieStore
的cookie添加到头-即使我明确设置了头。但是我想自己管理这些cookie(要么删除其中的一些,要么更新它们的值)。而对于上面的姜饼(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管理提供一些抽象。
当您需要为所有请求传递公共头时,clienthttpprequestinterceptor
类是一种很好的方法,例如设置内容类型、授权等。据我所知,您希望为特定请求传递一些cookie值。您还可以通过HttpEntity
和HttpHeaders
类来实现这一点。
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Cookie", "name=" + value);
HttpEntity requestEntity = new HttpEntity(null, requestHeaders);
ResponseEntity response = restTemplate.exchange(
"http://server/service?...",
HttpMethod.GET,
requestEntity,
Response.class);
Spring rest模板不提供任何管理Cookie的非自助解决方案。类CookieHandler
由Apache提供,不是spring的一部分。与spring core相比,Rest模板只是管理请求-响应的基本解决方案。
我自己没有使用Spring,但从我读到的信息来看,它遵循官方建议,并根据API版本切换HTTP客户机(这非常聪明,如果严格按照我的喜好过度设计的话)。正如您所提到的,当使用HTTPUrlConnection
时,Spring可能不会更改CookieHandler
。你应该看到内存中的cookie处理,所以在同一个应用程序运行时,所有请求都应该工作,但当你关闭应用程序时,cookie会被清除。你能确认这就是你看到的吗?
如果是这样,您只需创建一个新的CookieManager
实例,为CookiePolicy
传递一个自定义CookieStore
和null
,以使用默认值。
不幸的是,持久存储不是内置的,但编写持久存储也不是特别困难。
编辑:有关使用SharedReferences
(我自己还没有测试过)的CookieStore,请参见此处。
在本章中,我们将研究Joomla中的Template Manager 。 它管理网站中使用的各种模板。 可以在不改变网站内容结构的情况下使用模板。 模板管理器 以下是在Joomla中编辑模板管理器的简单步骤。 Step (1) - 单击Extensions → Template Manager ,如下所示。 Step (2) - Template Manager:Styles页面显示如下。 在这里
我有两项服务-和<代码>服务1通过SpringREST模板调用一些API。现在
什么是模板 你一定听说过一种叫做MVC的设计模式,Model处理数据,View展现结果,Controller控制用户的请求,至于View层的处理,在很多动态语言里面都是通过在静态HTML中插入动态语言生成的数据,例如JSP中通过插入<%=....=%>,PHP中通过插入<?php.....?>来实现的。 通过下面这个图可以说明模板的机制 图7.1 模板机制图 Web应用反馈给客户端的信息中的大部分
和ErrorHandler类: 问题是,如果我在RestExample.add方法中添加一个“Throw new RuntimeException”,那么RestErrorHandler类将正确处理该异常。 但是,当将一个无效的请求向控制器卷取时,RestErrorHandler不会捕获验证器抛出的异常,而我会收到一个400BadRequest响应。(对于无效请求,我指的是未指定用户名的xml请求
Flarum 管理面板是一个用户友好的论坛管理界面。 它只对「管理」组 的用户开放。 要进入管理界面,只需点击屏幕右上方您的 用户名, 选择 后台管理 即可。
在我的Spring Boot项目中,我在application-dev.yml文件中设置了几个endpoint(它们引用一些GET或POST REST API)。 我想用一个方法在一个服务类中管理这些endpoint。目前我已经实现了这个解决方案: 我希望使用一个单一的方法,使其尽可能具有通用性,特别是当我必须管理大量endpoint时。你有什么想法吗?提前致谢