ehang-io / nps

一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
https://ehang.io/nps/documents
GNU General Public License v3.0
29.73k stars 5.37k forks source link

WebApi请求返回302 #1204

Closed iad12138 closed 1 year ago

iad12138 commented 1 year ago

这是我的请求代码:

        String auth = "xxx";
        RestTemplate rest = new RestTemplate();
        JSONObject timeR = rest.getForObject("http://xxx/auth/gettime", JSONObject.class);
        assert timeR != null;
        int time = timeR.getInteger("time");

        URI url = URI.create("http://xxx/client/list");
        RestTemplate restTemplate = new RestTemplate();
        // 创建请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        // 创建请求参数
        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
        map.add("auth_key", DigestUtils.md5DigestAsHex((auth + time).getBytes()));
        map.add("timestamp", "time");
        map.add("start", "0");
        map.add("limit", "10");
        // 创建请求实体对象
        HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
        // 发送请求
        String response = restTemplate.postForObject(url, request, String.class);

其中获取服务器时间戳正常 但是下面的/client/list报错 302

iad12138 commented 1 year ago

我找到解决办法了,希望对大家有帮助

        String auth = "xxx";
        RestTemplate rest = new RestTemplate();
        JSONObject timeR = rest.getForObject("http://xxx/auth/gettime", JSONObject.class);
        assert timeR != null;
        int time = timeR.getInteger("time");

        String authKey = DigestUtils.md5DigestAsHex((auth + time).getBytes());
        URI url = URI.create("http://xxx/client/list?auth_key=" + authKey + "&timestamp=" + time);
        // 创建请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        // 创建请求参数
        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
        map.add("start", "0");
        map.add("limit", "10");
        // 创建请求实体对象
        HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
        // 发送请求
        String listR = rest.postForObject(url, request, String.class);
        log.info("{}", listR);