javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie,有什么区别?

时间:2015-12-02 15:17:10

标签: java api rest cookies jax-rs

我在JAX-RS API javax.ws.rs.core.Cookiejavax.ws.rs.core.NewCookie中找到了两个类。一个人比另一个人有什么好处? 我想知道建议使用哪一个以及何时使用?

提前致谢:)

1 个答案:

答案 0 :(得分:18)

不是推荐,而是适当的。一个是请求,一个是响应。你可以看到两个不同的javadoc。

Cookie

  

表示在请求中传输的HTTP Cookie的值。

NewCookie

  

用于创建新的HTTP Cookie,通过响应传输。

NewCookie,在Response中发送时,会设置带有Cookie信息的Set-Cookie 回复标头,Cookie将设置带有Cookie信息的Cookie 请求标头。这是根据HTTP规范。

使用示例:

@GET
public Response get() {
    return Response.ok("blah").cookie(new NewCookie("foo", "bar")).build();
}

[..]

Client client = ClientBuilder.newClient();
Response response = client.target(url).request().cookie(new Cookie("foo", "bar")).get();

通常在客户端,您不会像我一样手动创建Cookie。大多数情况下,您会从初始请求的响应中获取cookie,然后将这些cookie发回。这意味着,在Response中,您将拥有NewCookie,并且您需要将这些内容转换为Cookie以获取下一个请求。这可以通过调用newCookie.toCookie()

轻松完成
Map<String, NewCookie> cookies = response.getCookies();
Invocation.Builder ib = target.request();
for (NewCookie cookie: cookies.values()) {
    ib.cookie(cookie.toCookie());
}
Response response = ib.get();