如何读取响应 RESTEasy 客户端时返回的 Cookie?

How Can I Read Cookies Coming Back in the Response to a RESTEasy Client?

我正在使用 RESTEasy Proxy 客户端,并使用以下代码对其进行实例化。

final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(pUrl);
mClient = target.proxy(FooClientProxy.class);

其中 FooClientProxy 是我的代理接口。

FooClientProxy定义了一个login方法,如下

@POST
@Path("/foo/login/{username}/{password}")
public abstract void login(@PathParam("username") String pUsername, @PathParam("password") String pPassword);

登录后,使用 mClient.login(pUsername, pPassword);,我想看看在响应中返回了哪些 cookie。

有什么方法可以询问代理客户端以读取响应中的 cookie?

我认为您可以在应该能够访问 cookie 的地方注入 HttpSession 请求:

@POST
public String someRestCall(Postdata postdata, @Context HttpServletRequest request) {
  System.out.println(request.getCookies());
}

分别针对您的情况

@POST
@Path("/foo/login/{username}/{password}")
public abstract void login(@PathParam("username") String pUsername, @PathParam("password") String pPassword,  @Context HttpServletRequest request);

我不是 100% 确定,因为我不能在这里测试,但我很确定:-)

为什么你的登录方式是void?如果你想 return 一个 Response 你可以像这样阅读 Cookie:

mClient = target.proxy(FooClientProxy.class);
Response response = mClient.login(user, pw);
NewCookie cookie = response.getCookies().get(cookieName);