Java JAX-RS如何从请求中获取cookie?
考虑以下方法:Java JAX-RS如何从请求中获取cookie?,java,rest,service,jax-rs,Java,Rest,Service,Jax Rs,考虑以下方法: @POST @Path("/search") public SearchResponse doSearch(SearchRequest searchRequest); 我希望此方法能够了解发出请求的用户。因此,我需要访问与用户发送的SearchRequest对象关联的cookie 在SearchRequest类中,我只有以下实现: public class SearchRequest { private String ipAddress; privat
@POST
@Path("/search")
public SearchResponse doSearch(SearchRequest searchRequest);
我希望此方法能够了解发出请求的用户。因此,我需要访问与用户发送的SearchRequest
对象关联的cookie
在SearchRequest类中,我只有以下实现:
public class SearchRequest {
private String ipAddress;
private String message;
...
以下是请求:
{
"ipAddress":"0.0.0.0",
"message":"foobarfoobar"
}
当用户登录到系统时,浏览器将与此请求一起发送cookie集
我的问题是如何在
doSearch
方法的上下文中访问cookie?您可以对方法的参数使用javax.ws.rs.CookieParam
注释
@POST
@Path("/search")
public SearchResponse doSearch(
SearchRequest searchRequest,
@CookieParam("cookieName") Cookie cookie
) {
//method body
}
这里使用的Cookie
类是javax.ws.rs.core.Cookie
,但您不必使用它
您可以在任何参数上使用此注释,只要:
Cookie
(与上面的示例相同)字符串参数的构造函数
valueOf
或fromString
的静态方法,该方法接受单个String
参数(例如,请参见Integer.valueOf(String)
)ParamConverterProvider
JAX-RS扩展SPI的注册实现,它返回一个ParamConverter
实例,该实例能够对类型进行“从字符串”转换List
、Set
或SortedSet
,其中T
满足上述2、3、4或5项要求。生成的集合是只读的这些规则来自json应该是什么样子?{“ipAddress”:“0.0.0.0”,“message”:“foobarfoobar”,“Cookie”…..?--我希望浏览器在默认情况下返回Cookie,所以我猜浏览器会自动填充此参数?}JSON不必更改。Cookie不存储在请求正文中。要设置cookie,您应该使用HTTP头。你怎么打电话给服务部?您使用的是JAX-RS Java客户端库吗?你是从JavaScript前端调用它吗?是的,我用JavaScript做的请求。我做了,谢谢。它正在工作。Cookie参数是从浏览器中自动填充的,正如我所期望的那样。谢谢你,汤姆!