这是因为从 Spring Framework 6.1开始,大多数 ClientHttpRequestFactory 实现在将请求体发送到服务器之前不再使用缓冲区。因此,对于某些内容类型(如 JSON) ,不再知道内容大小,也不再设置 Content-Llength 。如果希望像前面那样对请求主体进行缓冲,只需在 BufferingClientHttpRequestFactory 中包装正在使用的 ClientHttpRequestFactory即可
小程序手机号解析接口一直报 412 Precondition Failed: [no body]?public String getPhoneNumber(String phoneCode) { JSONObject params = new JSONObject(); params.put("code", phoneCode); String url = MessageFormat.format("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={0}", getAccessToken()); JSONObject reObj = restTemplate.postForObject(url, params, JSONObject.class); if (reObj != null && reObj.containsKey("errcode")) { log.info(reObj.toJSONString()); if (reObj.getInteger("errcode") == 0) { Code2PhoneNumberResponse code2PhoneNumberResponse = JSONObject.parseObject(reObj.toJSONString(), Code2PhoneNumberResponse.class); return code2PhoneNumberResponse.getPhoneInfo().getPurePhoneNumber(); } } return null; }
08-22