Есть ли способ получить куки из одного ответа на обмен restTemplate и установить его для другого отдельного запроса? - PullRequest
0 голосов
/ 03 июня 2019

Я относительно новичок в весенних и весенних ботинках и мне нужна помощь. Я гуглил и гуглил и гуглял, но это заняло много времени для чего-то, что должно быть довольно простым.

В настоящее время я работаю над проектом, в котором мне нужно взять файлы cookie, полученные из одного ответа restTemplate, и передать их другому запросу.

Код выглядит примерно так:

ResponseEntity<SomeObject> responseOne  = restTemplate.exchange(URL, HttpMethod.POST, request, SomeObject.class);

Всего есть 3 куки, и мне нужно, чтобы они перешли от responseOne к включенным в вызов responseTwo.

ResponseEntity<SomeOtherObject> responseTwo  = restTemplate.exchange(URL, HttpMethod.POST, request, SomeOtherObject.class);

Надеюсь, кто-то может помочь!

1 Ответ

2 голосов
/ 03 июня 2019

Вы можете получить доступ к файлам cookie с помощью метода responseOne.getHeaders(). Они отправляются в виде заголовков с именем Set-Cookie например ::100100 *

Set-Cookie: JSESSIONID=4054C174E5CD78D5FDD8BD8D155FC233; Path=/yourapp; Secure; HttpOnly Set-Cookie: anotherCookie=anotherValue; path=/; HttpOnly

Разобрать каждое значение заголовка, чтобы отделить имя файла cookie от значения файла cookie.

Тогда вам просто нужно установить их в объекте запроса второго вызова:


SomeObject someObject = ...

HttpHeaders headers = new HttpHeaders();
headers.add("COOKIE", "JSESSIONID=4054C174E5CD78D5FDD8BD8D155FC233; anotherCookie=anotherValue; cookie3=value3");

HttpEntity<SomeObject> entity = new HttpEntity<>(someObject, headers);

ResponseEntity<SomeOtherObject> responseTwo  = restTemplate.exchange(URL, HttpMethod.POST, request, SomeObject.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...