使用RestTemplate在代码内调用POST请求的参数乱码问题
Posted miaoying
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用RestTemplate在代码内调用POST请求的参数乱码问题相关的知识,希望对你有一定的参考价值。
背景:在项目A代码内部,调用项目B的restful接口C,我们采用了RestTemplate进行调用,但是调用过程中,一直不能正常返回数据,日志显示参数存在乱码(有个参数的值是中文)
乱码原因:请求方式是POST,但是我们把参数都放在了url的?后面,参数传递形式与GET请求一样!!!
由于请求方式是POST,所以需要将参数放在body里面进行传递,并且参数需要用MultiValueMap结构体装载,如下所示(RestTemplate的调用改为如下就好了):
if (method == HttpMethod.POST) { MultiValueMap<String, Object> postParameters = new LinkedMultiValueMap<>(); map.forEach((k, v) -> { postParameters.add(k, v.toString()); }); return JSON.parseObject(restTemplate.postForObject(url, postParameters, String.class)); }
以上是关于使用RestTemplate在代码内调用POST请求的参数乱码问题的主要内容,如果未能解决你的问题,请参考以下文章
POST 使用 RestTemplate、查询参数和请求正文
springboot使用restTemplate post提交值 restTemplate post值