最近将老项目从springboot2.x升级到3.x中,遇到了很多的坑,每个服务的业务不一样,坑也不都完全相同,我在改造微信相关服务的后台过程中,遇到了该异常,如图所示
原因分析:微信会检查Content-Length参数,但Spring Framework 6.1以后请求不再设置该参数
解决办法:自己在http header中自己设置Content-Length就行了,示例代码如下
String body = JSONObject.toJSONString(params);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setContentLength(body.getBytes(StandardCharsets.UTF_8).length);
HttpEntity<String> httpEntity = new HttpEntity<>(body, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, httpEntity, String.class);