使用RestTemplate发送post请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用RestTemplate发送post请求相关的知识,希望对你有一定的参考价值。

最近使用RestTemplate发送post请求,遇到了很多问题,如转换httpMessage失败、中文乱码等,调了好久才找到下面较为简便的方法:

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());

JSONObject jsonObj = JSONObject.fromObject(params);

HttpEntity<String> formEntity = new HttpEntity<String>(jsonObj.toString(), headers);

String result = restTemplate.postForObject(url, formEntity, String.class);

如果直接使用在postForObject中把对象传入很容易出现no suitable HttpMessageConverter found for request type的错误,建议直接先转成字符串,见jsonObj.otString(),网上有人说设置RestTemplate的 HttpMessageConverter,试了一下要引入各种包。另外要注意中文编码问题,网上有人说 StringHttpMessageConverter默认使用ISO-8859-1,要指定为UTF-8编码,自己尝试没有成功,最后通过指定 contentType的方式解决了。

 

以上是关于使用RestTemplate发送post请求的主要内容,如果未能解决你的问题,请参考以下文章

使用RestTemplate发送post请求

如何使用 RestTemplate 将 POST 请求发送到相对 URL?

spring restTemplate 发送post请求携带参数和请求头

如何在不转义双引号的情况下使用 RestTemplate 发送 JSON 发布请求?

springboot使用RestTemplate以post方式发送json字符串参数(以向钉钉机器人发送消息为例)

RestTemplate发送带body参数的post请求