在Spring WS中,如何从服务器响应中检索JSESSIONID cookie,并在后续请求中进行设置

时间:2019-05-03 22:51:36

标签: java spring cookies spring-ws jsessionid

我正在使用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 []?

0 个答案:

没有答案