В Java, особенно при весенней загрузке, как я могу получить или установить значение сеанса домена A из домена B, вызвав Api с помощью RestTemplate?
Пример в домене B. Я использовал RestTemplate postForObject для вызова Api из домена demo2.com:
public ResponseEntity<String> doLogout(@RequestBody String userId){
System.out.println("123" + userId);
RestTemplate rest = new RestTemplate();
for(String s : listUrl) {
System.out.println("url: " + s);
rest.postForObject("http://demo2.com"+"/doLogout", userId, String.class);
}
return new ResponseEntity<String>(HttpStatus.OK);
}
На demo2.com вот мой API. Но когда я напечатал значение атрибута сеанса userId и access-token на сайте demo2.com, оно всегда показывает нуль.
@RequestMapping(value = "/doLogout", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> doLogout(HttpServletRequest request, @RequestBody String userId){
System.out.println("abc" + SessionUtil.getAttribute(request, "access-token") + SessionUtil.getAttribute(request, "userId"));
if (userId.equals(SessionUtil.getAttribute(request, "userId"))) {
System.out.println("vao day");
SessionUtil.setAtribute(request, "access-token", null);
}
return new ResponseEntity<String>(HttpStatus.OK);
}




Хотя я никогда не использовал метод postForObject с RestTemplate, я вижу в их документации (https://www.baeldung.com/rest-template), что вы должны обернуть свой параметр Post в объект HttpEntity.
Поэтому на вашем месте я бы попробовал, как они предлагают,
ClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
RestTemplate restTemplate = new RestTemplate(requestFactory);
HttpEntity<String> request = new HttpEntity<>(new String("<user_id_value>"));
String userId = restTemplate.postForObject("http://demo2.com"+"/doLogout", request, String.class);
System.out.println("User ID : " + userId);
Однако postForObject используется для создания ресурса, который затем будет возвращен. Если вы хотите отправить форму с параметрами публикации, которые вы укажете и назовете по желанию, вам нужно следовать 4.4 по ссылке, которую я вставил выше,
https://www.baeldung.com/rest-template
Таким образом, если вы включите пару ключ-значение для идентификатора пользователя, вы сможете получить ее на demo2.com.