开发的时候RestTemplate用PostForObject传参时,出现请求端参数无法接收问题。现简单记录下解决方案。以后有空会补充其他相关。
1. 传值为Map时需要在请求的url上进行传参设置.此时map参数需要放到postForObject最后一个参数中。
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
// 设置超时
requestFactory.setConnectTimeout(5000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
Map<String, Object> params = new HashMap<>();
params.put("page", page);
restTemplate.postForObject(sysBasePath + "/api/qgj/user/v1/find_qgj_user.do?page={name}", null, String.class,params);
2. 如果不想在url上面进行传参设置,则需要把Map类型更换为MultiValueMap
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
// 设置超时
requestFactory.setConnectTimeout(5000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("typeCodes", typeCodes);
params.add("userInfo", userInfo);
restTemplate.postForObject(sysBasePath + "/api/qgj/user/v1/find_qgj_user.do", params, String.class);
想了解具体的原理的小伙伴可以参考博客:https://blog.csdn.net/weixin_40461281/article/details/83472648