java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring RestTemplate调用POST接口url参数签名错误

Spring RestTemplate调用POST接口url参数签名错误怎么解决

作者:Q z1997

在使用Spring RestTemplate对接特殊接口时,如果遇到POST请求但参数放在URL中导致签名错误的问题,本文提供了详细的排查和解决方法,通过对比Postman和Java代码的请求方式,帮你快速定位问题,确保接口调用成功

使用 Spring RestTemplate对接一个奇怪的接口

这个接口使用 POST 请求但是是url 带的参数 我们在postman上测试是正常的。

但是在代码中使用则出现 签名错误的提示(请求参数问题)

postman 请求截图

Java代码

        url = String.format(url + "?app_id=%s&expire_time=%s&callback_data=%s&user_type=%s&sign=%s", APP_ID, time, data, userType, sign);
        log.info("发起请求 url: " + url);
        HttpHeaders headers = new HttpHeaders();
        headers.add("Php-Run", "swoole");
        //将请求头部和参数合成一个请求
        return restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(headers), String.class).getBody();

请求结果

修改后的Java代码

        url = String.format(url + "?app_id=%s&expire_time=%s&callback_data=%s&user_type=%s&sign=%s", APP_ID, time, data, userType, sign);
        URI uri = new URI(url);
        log.info("发起请求 url: " + url);
        HttpHeaders headers = new HttpHeaders();
        headers.add("Php-Run", "swoole");
        //将请求头部和参数合成一个请求
        return restTemplate.exchange(uri, HttpMethod.POST, new HttpEntity<>(headers), String.class).getBody();

请求结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文