I\'m using Netbeans to automatically create webservice clients based off WSDL files. This works well, except the webservices I\'m using require that I pass in a custom cooki
I've found a solution.
You can get response headers using this after you've made the call:
((BindingProvider)port).getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS);
Find the Set-Cookie
header and store its value.
Then before your next request (in any webservice) you can set the Cookie header:
((BindingProvider)port).getRequestContext().put(
MessageContext.HTTP_REQUEST_HEADERS,
Collections.singletonMap("Cookie", Collections.singletonList(cookieValue)
)
);
Just commenting because solution above didn't work for me. I got UnsupportedOperationException. I believe issue was caused because singletonMap doesn't allow changes. xml headers were also needed, so I set those first.
Map<String, List<String>> headers= CastUtils.cast((Map)port.getRequestContext().get("javax.xml.ws.http.request.headers"));
if (headers == null) {
headers = new HashMap<String, List<String>>();
port.getRequestContext().put("javax.xml.ws.http.request.headers", headers);
}
headers.put("Cookie", Collections.singletonList(cookieValue));
((BindingProvider)port).getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);