spring resttemplate中的转码
/** 初始化RestTemplate,RestTemplate会默认添加HttpMessageConverter* 添加的StringHttpMessageConverter非UTF-8 所以先要移除原有的StringHttpMessageConverter,* 再添加一个字符集为UTF-8的StringHttpMessageConvert*/private void reInitMessageConverter(RestTemplate restTemplate) {List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();HttpMessageConverter<?> converterTarget = null;for (HttpMessageConverter<?> item : converterList) {if (item.getClass() == StringHttpMessageConverter.class) {converterTarget = item;break;}}if (converterTarget != null) {converterList.remove(converterTarget);}HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);converterList.add(converter);}
RestTemplate 中文乱码解决方法
标签: resttemplate 中文乱码 方法 | 发表时间:2016-02-01 15:51 | 作者:yangzelin_job09
出处:http://www.iteye.com
Spring4.2.2.RELEASE RestTemplate 中文乱码解决方法
RestTempalate 字符串类型默认StringHttpMessageConverter做转码,而StringHttpMessageConverter的默认编码集是ISO8859-1,本工程编码是UTF-8 故发送到服务器端会存在中文乱码
第一种:把restTempalate 中 StringHttpMessageConverter 默认编码设置为UTF-8
具体:使用 restTempalate 构造函数 public RestTemplate(List<HttpMessageConverter<?>> messageConverters) 传入 StringHttpMessageConverter 默认编码集是UTF-8 的转换器
在 配置文件中配置:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> <constructor-arg index="0"> <list> <bean id="byteArrayHttpMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8"></constructor-arg> </bean> <bean id="resourceHttpMessageConverter" class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean> <bean id="sourceHttpMessageConverter" class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean> <bean id="allEncompassingFormHttpMessageConverter" class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"></bean> <bean id="jaxb2RootElementHttpMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></bean> <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> </list> </constructor-arg> </bean>
第二种:使用 设置Http请求头中设置 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 修改默认编码
HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8"); headers.setContentType(type); System.out.println(type); HttpEntity<String> requestEntity = new HttpEntity<String>(PostStrUtils.getPostStrFromMap(paramMap), headers); String msg = restTemplate.postForObject(url,requestEntity, String.class);
public String sendToRest(String url, Map<String, String> paramMap) { logger.debug("====================start======================"); logger.debug("调用接口-" + restUrl + url + " 入参:" + paramMap); /** * restTempalate 字符串类型默认StringHttpMessageConverter做转码,而StringHttpMessageConverter的默认编码集是ISO8859-1,本工程编码是UTF-8 故发送到服务器端会存在中文乱码 * 解决方法有两种: * 第一种:把restTempalate 中 StringHttpMessageConverter 默认编码设置为UTF-8 * 具体:使用 restTempalate 构造函数 public RestTemplate(List<HttpMessageConverter<?>> messageConverters) 传入 StringHttpMessageConverter 默认编码集是UTF-8 的转换器 * 在 配置文件中配置: * <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> * <constructor-arg index="0"> * <list> * <bean id="byteArrayHttpMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean> * <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> * <constructor-arg value="UTF-8"></constructor-arg> * </bean> * <bean id="resourceHttpMessageConverter" class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean> * <bean id="sourceHttpMessageConverter" class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean> * <bean id="allEncompassingFormHttpMessageConverter" class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"></bean> * <bean id="jaxb2RootElementHttpMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></bean> * <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> * </list> * </constructor-arg> * </bean> * * * 第二种:使用 设置Http请求头中设置 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 修改默认编码 * */ //存在中文乱问题 // String msg = restTemplate.postForObject(restUrl + url, // PostStrUtils.getPostStrFromMap(paramMap), String.class); // HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8"); headers.setContentType(type); System.out.println(type); HttpEntity<String> requestEntity = new HttpEntity<String>(PostStrUtils.getPostStrFromMap(paramMap), headers); String msg = restTemplate.postForObject(url,requestEntity, String.class); logger.debug("调用接口-" + restUrl + url + " 返回:" + msg); logger.debug("====================end========================"); return msg; }
转载于:https://www.cnblogs.com/wangyang108/p/5754186.html
spring resttemplate中的转码相关推荐
- Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求
Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明:本 ...
- Spring RestTemplate中几种常见的请求方式
关注公众号[江南一点雨],专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货! 在Spring Cloud ...
- Spring-Web(一) RestTemplate使用与源码浅析
Spring RestTemplate使用与源码浅析 一.RestTemplate 概述 RestTemplate 是 Spring Web 模块封装的一个基于Rest规范提供HTTP请求服务的工 ...
- Spring Cloud中Hystrix仪表盘与Turbine集群监控
Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix的各项指标信息,从而快速发现系统中存在的 ...
- Spring Cloud中Hystrix的请求合并
在微服务架构中,我们将一个项目拆分成很多个独立的模块,这些独立的模块通过远程调用来互相配合工作,但是,在高并发情况下,通信次数的增加会导致总的通信时间增加,同时,线程池的资源也是有限的,高并发环境会导 ...
- Spring Cloud中Hystrix仪表盘与Turbine集群监控 1
Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix的各项指标信息,从而快速发现系统中存在的 ...
- Spring容器中获取Bean实例的七种方式(附实战源码)
目录 写作说明 一:写作原因 二:源码出处 实现方式 一:使用BeanFactory直接获取(不推荐) 二:在初始化时保存ApplicationContext对象 三:继承自抽象类Applicatio ...
- springsecurity sessionregistry session共享_要学就学透彻!Spring Security 中 CSRF 防御源码解析...
今日干货 刚刚发表查看:66666回复:666 公众号后台回复 ssm,免费获取松哥纯手敲的 SSM 框架学习干货. 上篇文章松哥和大家聊了什么是 CSRF 攻击,以及 CSRF 攻击要如何防御.主要 ...
- Spring中AOP源码剖析
Spring中AOP源码剖析 关键词 aop的增强发生在后置处理器中(没有循环依赖) 最终增强是通过 递归调用 ,层层增强 一.环境准备 1.1 bean和接口 public class AopBea ...
最新文章
- oracle do date,Oracle to_date函数的使用
- 刷爆技术圈的《知识图谱》终于补货了,最后 968 份,低至 2 折,抢完不补!...
- 百练-16年9月推免-B题-字符串判等
- 统计gitlab代码行脚本_一点也不复杂, GitLab Webhook 自动部署代码
- Angular Jasmine 里一些常用概念学习笔记 - describe, it, beforeEach的用法
- 【转】sql表及字段命名规范
- 检测输入路径是否存在错误_为什么存在用户输入错误
- linux系统使用小端内存,linux进程内存管理
- hnu 暑期实训之魔咒词典
- 腾讯火力全开“吃鸡”:下一个游戏行业风口怎能错过?
- html京东 重置代码,拟写京东登录界面(HTML - CSS)
- No module named ‘_ssl‘
- 【OCM第18期开班】第18期11g OCM培训将于8月23日,晚20点在腾讯课堂开班,第1场考试免费培训!!!...
- 正则表达式之密码验证
- 自媒体人如何定位?自媒体大号应该怎么去运营和发展
- Mac系统解决ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘方法
- Android轮播图原理思路分析+实现方案
- 139邮箱发送邮件(python web自动化)
- Butter Knife 黄油刀
- 5S软件就是将软件应用全维度简单化的软件系统
热门文章
- 2012r2配置java_JDK+Tomcat 服务器配置+腾讯云Win2012 R2 配置安装
- 【Spring】详解ContextLoaderListener和DispatcherServlet的区别
- 原生JS、jQuery 遍历方法总结
- 论文都看不懂,你还搞什么人工智能?
- 从零开始通过 Artifactory 搭建公网的 maven 仓库
- centos mysql 安装及配置
- HtmlDom 基础
- org.apache.commons.lang.StringUtils(StringUtils工具类的常用方法)
- 华为路由器防火墙配置命令总结(上)
- 6.5版本虚拟机的封装