点击登录按钮后在fiddler中找出请求url。链接过多的话设置一下fiddler中的过滤器就好了。
登录进来后随便点击一个功能进行测试。
直接点击raw就能看到请求头的全部内容。下面的点击json,就能看到返回的响应结果了。
下面是java代码,因为我是学Java的,所以就用java来远程调用接口了。
package com.example.springwangwork; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.util.LinkedMultiValueMap; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; /** * @author: Mr.Wang * @create: 2021-12-19 10:49 **/ @Configuration public class Main { private static final RestTemplate restTemplate = new RestTemplate(); public static void main(String[] args) throws InterruptedException { //设置请求头内容 LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); headers.set("Accept","application/json, text/javascript, */*; q=0.01"); headers.set("Accept-Encoding","gzip, deflate, br"); headers.set("Accept-Language","zh-CN,zh;q=0.9"); headers.set("Content-Type","application/json"); headers.set("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 Core/1.77.85.400 QQBrowser/10.9.4610.400"); HashMap<?, ?> post = post("http://localhost:8080/login",headers); //登录获取token String data = (String) post.get("data");//成功登录后,提取token设置在请求头中,因为每个请求都需要验证token。 headers.add("Authorization",data);//guns中的shiro登录验证存放于名为Authorization的cookies中,里面放的是jwt的token。 //获取业务中的json需要发送get请求,因为是查询嘛。他controller设置的请求只允许get请求。get请求想要携带请求头的话需要通过restTemplate的exchange方法。不能直接getForObject ResponseEntity<String> exchange = exchange("http://localhost:8080/sysUser/currentUserInfo", headers); System.out.println(exchange); } public static HashMap<?,?> get(String url){ return restTemplate.getForObject(url, HashMap.class); } public static ResponseEntity<String> exchange(String url,LinkedMultiValueMap<String,String> headers){ HttpEntity<String> httpEntity = new HttpEntity<>("parameters",headers); return restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class); } public static HashMap<?,?> post(String url,LinkedMultiValueMap<String,String> headers){ //请求体需要携带的参数,账号密码。 Map<String, String> valueMap = new HashMap<>(); valueMap.put("account","admin"); valueMap.put("password","123456"); valueMap.put("rememberMe","True"); HttpEntity<Map<String, String>> httpEntity = new HttpEntity<>(valueMap,headers);//对请求头,请求体进行封装 return restTemplate.postForObject(url, httpEntity, HashMap.class);//发出请求 } }
请求头内容
浏览器控制台也是一样的
控制台打印信息,现在就可以直接对接到前端去了。这样做的原因仅仅是后端远程调用不存在跨域。如果前端也可以不用跨域进行远程访问的话,也就不用这么多花里胡哨的了,直接js就搞定了。教程结束,第一次发帖。有错误的大家可以指点一下!