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. Ubuntu 22.04 安装 VMware Tools

    VM 下的 install VMWare Tools 终端下载 VMware Tools sudo apt install open-vm-tools-desktop -y reboot

  2. 下一代编解码技术Ali266在视频超高清领域的应用展望

    超高清与各领域的需求融合和创新正在发生. 2022年是一个体育大年,众多世界级体育赛事通过视频直播.转播等形式给观众带来畅爽的观看体验. 2022年北京冬奥会,实现了奥运会历史上首次赛事全程4K制作播 ...

  3. 《深入理解Java虚拟机》第三章读书笔记(二)——HotSpot垃圾回收算法实现(OopMap,安全点安全区域,卡表,写屏障,三色标记算法)

    系列文章目录和关于我 前面<深入理解Java虚拟机>第三章读书笔记(一)--垃圾回收算法我们学习了垃圾回收算法理论知识,下面我们关注下HotSpot垃圾回收算法的实现,分为以下几部分 对象 ...

  4. vulnhub靶场之MOMENTUM: 2

    准备: 攻击机:虚拟机kali.本机win10. 靶机:Momentum: 2,下载地址:https://download.vulnhub.com/momentum/Momentum2.ova,下载后 ...

  5. 打开sublime text3 弹出错误提示 Error trying to parse settings: Expected value inPackages\UserJSONsublime-settings:13:17

    问题:打开sublime text3 弹出错误提示 Error trying to parse settings: Expected value inPackages\UserJSONsublime- ...

  6. saas架构之druid解析表名

    public void preHandle(BoundSql boundSql, RequestEntity requestEntity) { System.out.println("要执行 ...

  7. Vue3 企业级优雅实战 - 组件库框架 - 11 组件库的打包构建和发布

    回顾第一篇文章中谈到的组件库的几个方面,只剩下最后的.也是最重要的组件库的打包构建.本地发布.远程发布了. 1 组件库构建 组件库的入口是 packages/yyg-demo-ui,构建组件库有两个步 ...

  8. rust 网上资料记录(自用)

    最近要学嵌入式的rust,记录一些资料的url,方便自己查阅 书籍 常用的: rust圣经(不是权威指南那本)https://course.rs/ 中文 rust 参考手册 https://rustw ...

  9. LinkedHashmap简要说明

    https://segmentfault.com/a/1190000012964859 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 H ...

  10. idea插件Jclasslib---查看字节码指令

    1 简介 学习一个jvm的知识的时候总要去研究一些字节码指令,但是每一次都把class文件打开到jclasslib里面很是麻烦,后来google发现有人已经写好了这个插件Jclasslib.我们通过J ...