我正在使用Spring Boot和Spring WS对SOAP服务进行身份验证。 SOAP响应在标头中包含JSESSIONID cookie。我需要从服务器响应HTTP标头中检索该JSESSIONID的值,然后在每个后续的SOAP请求中将其作为“ Cookie”标头发送。
我知道JSESSIONID and setting cookie for WebServiceTemplate对此有一个答案,但是该链接已断开。
我们将不胜感激!
更新: 我已经编写了这段代码:
public class MyHttpComponentsMessageSender extends HttpComponentsMessageSender {
private final Logger log = LoggerFactory.getLogger(this.getClass());
public WebServiceConnection createConnection(URI uri) throws IOException {
HttpComponentsConnection conn = (HttpComponentsConnection) super.createConnection(uri) ;
HttpPost httpPost = conn.getHttpPost();
Header[] headers = httpPost.getAllHeaders();
for (Header header : headers) {
log.debug("header = {}", header);
}
HttpResponse httpResponse = conn.getHttpResponse();
log.debug("httpResponse = {}", httpResponse);
return conn;
}
}
这:
WebServiceTemplate webServiceTemplate = getWebServiceTemplate();
webServiceTemplate.setMessageSender(new MyHttpComponentsMessageSender());
response =
webServiceTemplate
.marshalSendAndReceive("http://www.foo.com/endpoint?wsdl", request, new SoapActionCallback("http://www.foo.com/endpoint?wsdl"));
我在响应中没有看到任何标题,可以从中获取 JSESSIONID cookie:
2019-05-05 07:24:22:213调试[main] MyHttpComponentsMessageSender-标头=接受编码:gzip
2019-05-05 07:24:22:213调试[main] MyHttpComponentsMessageSender-httpResponse = null
如何从服务器响应中从HttpClient中获取“ Set-Cookie”标头,或者更好的是,该Cookie []?