restTemplate使用及中文乱码问题
来源:互联网 发布:警察 两种人 程序员 编辑:程序博客网 时间:2024/06/07 19:36
restTemplate是spring提供的一个发送http请求的工具,我们知道spring里面有httpclient实现http请求,但是httpclient的使用相对繁琐,restTemplate使用就方便多了,而且restTemplate能将返回结果自动映射到bean中,不需要我们自己处理。不过在使用的时候遇到了中文乱码问题,我们知道http发送post请求时是以表单方式提交请求参数,而restTemplate中表单内string的编码方式默认是ISO-8859-1编码,可以查看StringHttpMessageConverter的源码,不过FormHttpMessageConverter是默认utf-8编码,这就意味着我们向表单中添加String类型参数时便会遇到中文乱码。我这里提供的是不需要改配置文件,使用代码解决中文问题的方法,包括对restTemplate的一个封装,
public <T> T restTemplate(String url, Map<String,T> params, Class<T> var, HttpMethod method) { RestTemplate restTemplate = new RestTemplate(); FormHttpMessageConverter fc = new FormHttpMessageConverter(); StringHttpMessageConverter s = new StringHttpMessageConverter(StandardCharsets.UTF_8); List<HttpMessageConverter<?>> partConverters = new ArrayList<HttpMessageConverter<?>>(); partConverters.add(s); partConverters.add(new ResourceHttpMessageConverter()); fc.setPartConverters(partConverters); restTemplate.getMessageConverters().addAll(Arrays.asList(fc, new MappingJackson2HttpMessageConverter())); MultiValueMap<String, T> map = new LinkedMultiValueMap<>(); map.setAll(params); switch (method) { case POST: return restTemplate.postForObject(url, map, var); case GET: String getParams = "?" + map.keySet().stream().map(k -> String.format("%s={%s}", k, k)).collect(Collectors.joining("&")); return restTemplate.getForObject(url + getParams, var, params); default: return restTemplate.postForObject(url, map, var); }}
所要注意的是get请求要求我们对URL中参数用占位符封装,user/getUser?userId={userId}&fe= {fe},就像这样,所以我在封装get请求时有一个拼接URL的操作。
0 0
- restTemplate使用及中文乱码问题
- restTemplate公用魔板使用及中文乱码问题
- RestTemplate发送中文参数乱码问题
- RestTemplate 中文乱码配置
- 解决spring3.0.5使用RestTemplate发送post请求响应中文乱码问题
- RestTemplate解决乱码问题
- Spring RestTemplate中文乱码原因
- Graphviz的使用及中文乱码问题
- Spring RestTemplate结果中文乱码解决方案
- SpringBoot中,RestTemplate中文乱码解决方案
- 使用SecureCRT登录Ubuntu及解决中文乱码问题
- 编译和使用QFtp,及中文乱码问题
- 编译和使用QFtp,及中文乱码问题
- 使用codeigniter中文乱码问题
- Python3 中文使用以及中文乱码问题
- springboot中配置restTemplate及简单使用
- 中文乱码问题原理及解决方案
- JSP中文乱码问题分类及解决方案
- 自学1-初识css
- hdu5890Eighty seven
- Coursera 的机器学习 (Andrew Ng) 课程 视频百度云
- 关于java中split的使用
- HDU 5879 Cure 2016 ACM/ICPC Asia Regional Qingdao Online 1002
- restTemplate使用及中文乱码问题
- 排序算法(四)——二分查找算法
- 基础1
- codeforces#371 B.Filya and Homework
- UML行为建模图——— 顺序图
- redis + spring 基本操作
- HUD 5883 The Best Path(2016亚洲区青岛站网络赛)
- 基础2
- java 字符串split有很多坑,使用时请小心!!