В Spring WS как извлечь файл cookie JSESSIONID из ответа сервера и установить в последующих запросах - PullRequest
0 голосов
/ 04 мая 2019

Я использую Spring Boot и Spring WS для аутентификации в сервисе SOAP.Ответ SOAP включает в себя файл cookie JSESSIONID в заголовках.Мне нужно извлечь значение этого JSESSIONID из HTTP-заголовка ответа сервера, а затем отправить его в виде заголовка «Cookie» в каждом последующем моем SOAP-запросе.

Я понимаю, что на этот вопрос есть ответ JSESSIONID и настройка cookie для 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"));

И я не вижу никаких заголовков в ответе, из которого яможно получить файл cookie JSESSIONID:

2019-05-05 07: 24: 22: 213 ОТЛАДКА [main] MyHttpComponentsMessageSender - header = Accept-Encoding: gzip

2019-05-05 07:24: 22: 213 DEBUG [main] MyHttpComponentsMessageSender - httpResponse = null

Как я могу получить заголовок "Set-Cookie" или, что еще лучше, Cookie [] из HttpClient из ответа сервера?

...