fiddler抓取guns框架登录以及业务接口【java】

fiddler抓取guns框架登录以及业务接口【java】

 点击登录按钮后在fiddler中找出请求url。链接过多的话设置一下fiddler中的过滤器就好了。fiddler抓取guns框架登录以及业务接口【java】

 登录进来后随便点击一个功能进行测试。fiddler抓取guns框架登录以及业务接口【java】

 

 直接点击raw就能看到请求头的全部内容。下面的点击json,就能看到返回的响应结果了。fiddler抓取guns框架登录以及业务接口【java】

 下面是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);//发出请求
    }
}

请求头内容

fiddler抓取guns框架登录以及业务接口【java】

 浏览器控制台也是一样的fiddler抓取guns框架登录以及业务接口【java】

fiddler抓取guns框架登录以及业务接口【java】

 控制台打印信息,现在就可以直接对接到前端去了。这样做的原因仅仅是后端远程调用不存在跨域。如果前端也可以不用跨域进行远程访问的话,也就不用这么多花里胡哨的了,直接js就搞定了。教程结束,第一次发帖。有错误的大家可以指点一下!

上一篇:食堂APP-项目开发及踩坑记录(5)


下一篇:guns learning 准备