Ответ 1
Вы можете сделать следующее:
-
Чтобы сохранить новый файл cookie:
@GET @Path("/login") @Produces(MediaType.TEXT_PLAIN) public Response login() { NewCookie cookie = new NewCookie("name", "123"); return Response.ok("OK").cookie(cookie).build(); }
-
Чтобы получить файл cookie (
javax.ws.rs.core.Cookie
):@GET @Path("/foo") @Produces(MediaType.TEXT_PLAIN) public Response foo(@CookieParam("name") Cookie cookie) { if (cookie == null) { return Response.serverError().entity("ERROR").build(); } else { return Response.ok(cookie.getValue()).build(); } }
Однако вам может понадобиться только значение:
@GET @Path("/foo") @Produces(MediaType.TEXT_PLAIN) public Response foo(@CookieParam("name") String value) { System.out.println(value); if (value == null) { return Response.serverError().entity("ERROR").build(); } else { return Response.ok(value).build(); } }
Кстати, вы можете попробовать следующий код:
@GET
@Path("/logout")
@Produces(MediaType.TEXT_PLAIN)
public Response logout(@CookieParam("name") Cookie cookie) {
if (cookie != null) {
NewCookie newCookie = new NewCookie(cookie, null, 0, false);
return Response.ok("OK").cookie(newCookie).build();
}
return Response.ok("OK - No session").build();
}
Это удаляет файл cookie в браузере. Поведение зависит от реализации JAX-RS. С RESTEasy (JBoss AS 7.0) и Google Chrome отлично работает.