通过网页调试,可以发现cookie在登录接口返回的response header里面
知道cookie的返回方式和位置之后,我们就可以通过代码模拟浏览器登录并获取cookie
通过restTemplate登录并获取cookie
public void testLogin() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 设置请求boby
MultiValueMap body = new linkedMultiValueMap<>();
body.add("username", "用户名");
body.add("password", "密码");
HttpEntity> entity = new HttpEntity<>(body, headers);
String url = "登录的url";
ResponseEntity resp = restTemplate.postForEntity(url, entity, String.class);
List cookie = resp.getHeaders().get("Set-cookie");
log.info("模拟浏览器登录,获取cookie为:{}", cookie);
}
执行代码得到结果为:
2022/01/12 09:45:12.375 INFO c.k.k.s.s.m.HaoParkSyncServiceTest - 模拟浏览器登录,获取cookie为:[s=cFdLJisdNxIvVjgxFnFHGk9BFnEWNzt1Gzk8BwBfeGpBeFl7CmB0FhV0bH0Ofj9kRFkXSV5aeBF4Xg;Path=/;Expires=Fri, 21-Nov-2031 01:40:37 GMT]通过上一步获取的cookie,模拟浏览器调用其他接口
public void test() {
HttpHeaders headers = new HttpHeaders();
List cookies = new ArrayList<>();
// 登录获取cookie 这里是直接给cookie,可使用下方的login方法拿到cookie给入
// 把上一步获取的cookie,在请求header里面传入
cookies.add("s=cFdLJisdNxIvVjgxFnFHGk9BFnEWNzt1Gzk8BwBfeGpBeFl7CmB0FhV0bH0Ofj9kRFkXSV5aeBF4Xg;Path=/;Expires=Fri, 21-Nov-2031 01:12:48 GMT");
// 将cookie存入头部
headers.put(HttpHeaders.cookie, cookies);
headers.setContentType(MediaType.APPLICATION_JSON);
Map paramMap=new HashMap<>();
HttpEntity 


