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. P4711 「化学」相对分子质量 代码

    #include <bits/stdc++.h> using namespace std; double ret=0; namespace StringUtils { pair<st ...

  2. LOJ 数列分块入门 9 题解题报告

    LOJ 数列分块入门 9 题解题报告 \(\text{By DaiRuiChen007}\) I. 数列分块入门 1 题目大意 \(\text{Link}\) 维护一个长度为 \(n\) 的序列,支持 ...

  3. Svelte框架实现表格协同文档

    首先,从框架搭建上,本篇示例采用当下流行的前后端分离的开发方式,前端使用npm作为脚手架搭建Svelte框架. 后端使用Java的SpringBoot作为后端框架. 首先,介绍下在前端Svelte框架 ...

  4. 洛谷P1862输油管道问题

    题目传送门 二话不说先上代码: #include<bits/stdc++.h> using namespace std; int n; int x,y[10001]; int main() ...

  5. 一种面向业务配置基于JSF广播定时生效的工具

    作者:京东物流 王北永 姚再毅 李振 1 背景 目前,ducc实现了实时近乎所有配置动态生效的场景,但是配置是否实时生效,不能直观展示每个机器上jvm内对象对应的参数是否已变更为准确的值,大部分时候需 ...

  6. Unity发布Web之支持手机端

    Unity发布Web之支持手机端 需求: ___ 相信有许多人和小黑一样,会遇到各种各样的难题,这其中就有,Unity发布Web后,在手机浏览器上可运行!!!!! 分析: 为什么会有相关的需求被提出呢 ...

  7. centos7系统的安装部署过程

    一.进入系统引导界面进行配置 引导项说明: 安装centos7系统(*) 测试光盘镜像并安装系统 排错模式(修复系统 重置系统密码) 补充:centos7系统网卡名称 默认系统的网卡名称 eth0 e ...

  8. day03-模型数据

    模型数据 1.数据放入request 说明:开发中,控制器/处理器中获取的数据如何放入request域,然后在前端(vue/jsp/...)取出显示? 先来看一个例子 应用实例需求:表单提交信息,后端 ...

  9. Java8Stream流2

    上期对stream流大致总结了一下,后面又做了一些练习,大家可以参考一下. 首先需要建一个 Product的实体类,后面会用到 @Data @AllArgsConstructor @NoArgsCon ...

  10. MySQL 如何实现数据更新

    一般在更新时会遇到以下场景:1.所有字段全部更新:2.根据条件更新字段中的某部分内容:3.根据不同的条件更新不同的值,以下是几种场景中常用的update方法. 一.方法分类 二.具体用法 (1)根据条 ...