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)
  • hav是
    ParamConverterProvider
    JAX-RS扩展SPI的注册实现,它返回一个
    ParamConverter
    实例,该实例能够对类型进行“从字符串”转换
  • Be
    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参数是从浏览器中自动填充的,正如我所期望的那样。谢谢你,汤姆!