小编典典

javax.ws.rs.core.Cookie与javax.ws.rs.core.NewCookie的区别是什么?

java

我在JAX-RS API
javax.ws.rs.core.Cookie和中找到了两个类javax.ws.rs.core.NewCookie。一个人比另一个人有什么优势?我想知道推荐使用哪一种,何时使用?

提前致谢 :)


阅读 222

收藏
2020-11-01

共1个答案

小编典典

这不是 建议 ,而是 适当的 。一个是请求,一个是响应。您可以看到两个不同的javadocs。

Cookie

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

NewCookie

用于创建新的HTTP cookie,并在 response中进行 传输。

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,您将有NewCookies,并且您需要将它们转换为Cookies,以用于下一个请求。只需致电即可轻松实现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();
2020-11-01