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();
请求结果

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