【发布时间】:2017-08-10 19:34:07
【问题描述】:
有没有一种很好的方法可以将 cookie 传递给使用相同客户端对象的所有请求?
现在我必须像这样将 cookie 传递给每个请求:
final Client client = ClientBuilder.newClient(clientConfig);
UriBuilder authenticate_url = UriBuilder.fromUri("xxxxxxxxx/authenticate");
WebTarget webTarget = client.target(authenticate_url);
Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_XML);
Response response = invocationBuilder.get();
Map<String, NewCookie> cookies = response.getCookies(); //store cookies
webTarget = client.target(other_url);
invocationBuilder = webTarget.request(MediaType.APPLICATION_XML).cookie(cookies.get("KEY"));
response = invocationBuilder.get(); //works
invocationBuilder = webTarget.request(MediaType.APPLICATION_XML);
response = invocationBuilder.get(); //does not work
【问题讨论】:
-
Use a ClientRequestFilter。我认为 ClientRequestContext 中的 cookie 映射可能是不可修改的。您可能需要手动设置
Cookie标头。 -
顺便说一句,响应中的 cookie 映射返回
NewCookies。这只是从服务器到客户端。客户端到服务器应该使用Cookie。您可以通过调用newCookie.toCookie()将NewCookie转换为Cookie。 stackoverflow.com/q/34046292/2587435
标签: java jersey-2.0