填坑记录,应为整个平台增加了Spring Security 的安全验证,直接RestTemplate访问后端服务,报401错误,也就是没有权限,需要登陆一次拿到对应的 session 和XSRF-TOKEN 值写入下一次请求的 Cookie里才能正常访问后端服务。
测试代码如下
这一段用于登录拿到session 和XSRF-TOKEN
@RequestMapping("/TestServerRequest")
public String look() {
RestTemplate restTemplate;
String url = "http://127.0.0.1:8088/user";//登录接口
restTemplate = new RestTemplate();
String userAndPass = "用户名:密码";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_XML);
headers.add("Authorization", "Basic " + Base64Utility.encode(userAndPass.getBytes()));
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
String sttr = response.getBody();
return "/index.html";
}
这一段是测试调用对应的后端服务
public void getTestRestTemplate( HttpHeaders headers )
{
RestTemplate restTemplate;
String url = "http://127.0.0.1:8094/服务名/dict/list";
restTemplate = new RestTemplate();
String XSRFTOKEN = headers.get("Set-Cookie").get(0).split(";")[0];
String SESSION = headers.get("Set-Cookie").get(1).split(";")[0];
HttpHeaders header = new HttpHeaders();
header.add("Cookie",XSRFTOKEN+";"+SESSION);//拼接放入Cookie
HttpEntity<String> entity = new HttpEntity<>(header);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
System.out.println(response.getBody());
}
这样就调用成功了。
工作日志记录。