我对弹簧和弹簧靴子比较陌生,需要一些急需的帮助。 我有谷歌,谷歌和谷歌,但这已经很久了,它应该很简单。
我目前正在一个项目中,需要从一个restTemplate响应中接收到的Cookie,并将其传递给另一个请求。
代码看起来像这样:
ResponseEntity<SomeObject> responseOne = restTemplate.exchange(URL, HttpMethod.POST, request, SomeObject.class);
总共有3个cookie,我需要它们将它们从responseOne移到responseTwo的调用中。
ResponseEntity<SomeOtherObject> responseTwo = restTemplate.exchange(URL, HttpMethod.POST, request, SomeOtherObject.class);
希望有人可以提供帮助!
答案 0 :(得分:2)
您可以通过responseOne.getHeaders()
方法访问cookie。它们以标题Set-Cookie
的形式发送,例如:
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);