Получить и установить значение сессии - PullRequest
1 голос
/ 11 мая 2019

В Java, особенно при весенней загрузке, как я могу получить или установить значение сеанса домена A из домена B путем вызова Api с помощью RestTemplate?

Пример в домене BI использовал 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);
}

1 Ответ

0 голосов
/ 11 мая 2019

Хотя я никогда не использовал метод 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

Таким образом, если вы включите пару ключ-значение для userId, вы сможете получить ее на demo2.com

...