Я использую 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 из ответа сервера?