https://blog.csdn.net/qq_43758789/article/details/120576717

使用RestTemplate发送PostForObject的时候会出现乱码。这是因为因为 HttpMessageConverter 构造器中的 StringHttpMessageConverter 默认为"ISO-8859-1"。

然而,我们需要的编码规则可能是“UTF-8”。 如何修改默认的编码呢?

方法一:遍历修改每一个集合的编码

其中一种方法,就是将每个集合的默认,创建对应的工具类方法如下:

 1 import org.springframework.http.converter.HttpMessageConverter;
2 import org.springframework.http.converter.StringHttpMessageConverter;
3 import org.springframework.web.client.RestTemplate;
4
5 import java.nio.charset.Charset;
6 import java.util.List;
7
8 /**
9 * HTTP请求模板工具栏
10 */
11 public class RestTemplateUtils extends RestTemplate {
12 /**
13 * HTTP模板编码
14 * @param charset 编码名称(如utf-8)
15 * @return
16 */
17 public static RestTemplate getInstance(String charset) {
18 RestTemplate restTemplate = new RestTemplate();
19 List<HttpMessageConverter<?>> list = restTemplate.getMessageConverters();
20 for (HttpMessageConverter<?> httpMessageConverter : list) {
21 if (httpMessageConverter instanceof StringHttpMessageConverter) {
22 ((StringHttpMessageConverter) httpMessageConverter).setDefaultCharset(Charset.forName(charset));
23 break;
24 }
25 }
26 return restTemplate;
27 }
28 }

调用例子。

RestTemplate restTemplate = RestTemplateUtils.getInstance("UTF-8");
// …… 请求头和返回方法
String result = restTemplate.postForObject (url, entity, String.class);

此时,我们发现,编码已经更改为“UTF-8”。

方法二: 修改头部集合的模板编码

创建工具类方法如下:

 1 /**
2 * 获取HTTP模板编码
3 * @param charset
4 * @return
5 */
6 public static RestTemplate setRestemplateCharact(Charset charset){
7 RestTemplate restTemplate = new RestTemplate();
8 restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(charset));
9 return restTemplate;
10 } 

调用例子:

 RestTemplate restTemplate = RestTemplateUtils.setRestemplateCharact(StandardCharsets.UTF_8);
// …… 请求头和返回方法
String result = restTemplate.postForObject (url, entity, String.class);

调用后,我们发现编码已经更改为“UTF-8”。

【Java SpringBoot】RestTemplate使用postForObject发送请求,接收String类型的response时中文乱码的更多相关文章

  1. 项目总结22:Java UDP Socket数据的发送和接收

    项目总结22:Java UDP Socket数据的发送和接收 1-先上demo 客户端(发送数据) package com.hs.pretest.udp; import java.io.IOExcep ...

  2. SpringMVC学习系列-后记 解决GET请求时中文乱码的问题

    SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...

  3. GET请求和POST请求的request和response的中文乱码问题

    GET请求(request)中文乱码解决方案: 在Services的server.xml的配置文件的第一个Connector标签中添加属性URIEncoding="UTF-8" P ...

  4. Java基础教程——模拟浏览器发送请求

    JAVA访问网页 分别测试使用get和post方法访问网页,可以收到服务器的请求,并写入到html文件中. import java.io.*; import java.net.*; import ja ...

  5. spring MVC 管理HttpClient---实现在java中直接向Controller发送请求

    在spring MVC中,大多数时候是由客户端的页面通过ajax等方式向controller发送请求,但有时候需要在java代码中直接向controller发送请求,这时可以使用HttpCilent实 ...

  6. 使用HttpClient发送请求接收响应

    1.一般需要如下几步:(1) 创建HttpClient对象.(2)创建请求方法的实例,并指定请求URL.如果需要发送GET请求,创建HttpGet对象:如果需要发送POST请求,创建HttpPost对 ...

  7. Response ServletContext 中文乱码 Request 编码 请求行 共享数据 转发重定向

    Day35  Response 1.1.1 ServletContext概念 u 项目的管理者(上下文对象),服务器启动时,会为每一个项目创建一个对应的ServletContext对象. 1.1.2  ...

  8. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

  9. [转]解决GET请求时中文乱码的问题

    原文地址:http://www.cnblogs.com/liukemng/p/4178882.html 之前项目中的web.xml中的编码设置: <filter> <filter-n ...

  10. 使用SpringMVC参数传递时,解决get请求时中文乱码的问题

    问题描述: 使用SpringMVC参数传递时, 遇到get请求中文信息时,页面应答会显示中文乱码. 解决办法: 一,  我们需要把request.getParameter(“参数名”)获取到的字符串先 ...

随机推荐

  1. Hugging Face 开源库介绍

    Hugging Face 的开源生态今年成长迅速,timm 成为新加入的成员.diffusers.evaluate 以及 skops 等各种库蓬勃发展. Transformers Transforme ...

  2. angular 输入框获取焦点失效的问题

    重点说明: 假如先设定了 输入框disabled又打开,然后执行获取焦点,可能会失效,这个时候可以把getFocus函数放在定时器里,1秒钟后执行,就可以了哦~ 具体代码如下 html         ...

  3. 初始rust

    安装rust 访问rust 按照步骤操作即可,安装很慢,请耐心等待 安装成功之后,请注意在命令行测试 rustc --version,cargo --version看看输出版本信息是否正常,如果不正常 ...

  4. 【分析笔记】全志 i2c-sunxi.c 控制器驱动分析

    分析平台:全志 A64 内核版本:Linux 4.9 数据手册:Allwinner_A64_User_Manual_V1.1.pdf (whycan.com) 驱动框架 I2C 设备驱动 作为方案应用 ...

  5. 【SW】利用3D打印机打印 PCB 钢网的方法

    每完成一个小作品以后,PCB打样回来,手工焊接着费时费力,定制钢网又未免太过浪费,想到自己有一台 FDM 3D 打印机,是不是可以通过 3D 打印机打印 "钢网" 呢? 在网上也翻 ...

  6. ReentrantLock介绍及源码解析

    ReentrantLock介绍及源码解析 一.ReentrantLock介绍 ReentrantLock是JUC包下的一个并发工具类,可以通过他显示的加锁(lock)和释放锁(unlock)来实现线程 ...

  7. Activiti02流程基本功能使用

    主要分为一下几个步骤: 1.画图 2.部署流程-把图的信息转入到数据表格中 3.创建流程实例-开始一个流程-实际发起了一个流程 4.执行任务:获取任务+完成任务 1.画图 画了一个简单的流程图,图形文 ...

  8. keypoint数据结构

    公有属性 (float)angle:角度,表示关键点的方向,-1为初值. (int)class_id:当要对图片进行分类时,我们可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设 ...

  9. 安卓逆向 创建自己一个SO库

    要求 1.能调用java中的方法 2.有返回值 如何完成一个SO ? public native String getText(); //第一肯定是得创建一个方法 cmd指令自动生成对应接口 生成完后 ...

  10. Java开发环境配置(win7-64bit)

    Java开发环境配置(win7-64bit) java Java开发环境配置(win7-64bit) Java开发环境配置(win7-64bit) 1.概述 2.文本用到的工具 3.环境变量配置 4. ...