我在JAX-RS API javax.ws.rs.core.Cookie
和javax.ws.rs.core.NewCookie
中找到了两个类。一个人比另一个人有什么好处?
我想知道建议使用哪一个以及何时使用?
提前致谢:)
答案 0 :(得分:18)
不是推荐,而是适当的。一个是请求,一个是响应。你可以看到两个不同的javadoc。
表示在请求中传输的HTTP Cookie的值。
用于创建新的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();