zoukankan      html  css  js  c++  java
  • 关于springboot RestTemplate 发起get,post请求 accept-charset 返回很长的英文的问题

    1原代码
    RestTemplate 这个我是自己直接new出来的,底层代码显示 RestTemplate 的编码是 iso-8859-1,并非utf-8。

    我在跟客户对接的时候,一度以为是因为header没设置 

    header.setContentType(MediaType.APPLICATION_JSON_UTF8); 的这个原因,后面排查发现加了这个也不是。
    而后又继续排查加这个:
    header.set(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.toString()); 还是不行。
    最后查到可能是因为默认编码导致的。

    故:创建一个修改默认编码的 RestTemplate
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.converter.StringHttpMessageConverter;
    import org.springframework.web.client.RestTemplate;

    import java.nio.charset.StandardCharsets;

    /**
    * 创建一个RestTemplate ,修改默认编码为 utf-8,框架默认为 iso-8859-1
    */

    @Configuration
    public class RestTemplateConfig {

    @Bean
    public RestTemplate initRestTemplate(){
    RestTemplate restTemplate= new RestTemplate();
    restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));

    return restTemplate;
    }
    }



    在需要使用这个 RestTemplate 的时候,不要再去new了,而是

    @Resource
    private RestTemplate restTemplate;

    或者----》
    @Autowired
    private RestTemplate restTemplate;








    -------》如上述方式还是不行。可以尝试下面这方式:

    RestTemplate restTemplate=new RestTemplate();
    for (HttpMessageConverter converter : restTemplate.getMessageConverters()) {
    if (converter instanceof StringHttpMessageConverter) {
    ((StringHttpMessageConverter) converter).setWriteAcceptCharset(false);
    }
    }
    解释下:当HttpEntity 传的body为Sting  设置
     ((StringHttpMessageConverter) converter).setWriteAcceptCharset(false);
    。大致就是当参数为String时候,设置setWriteAcceptCharset为false




  • 相关阅读:
    帆软查看注册用户的数据库信息
    [已解决]报错:sql server 返回结果出现中文乱码
    消除点击单元格时出现的黑框
    python tcp udp函数装饰器,无需亲自手写socket连接代码。
    介绍一个python代码自动运行在远程机器的三方包。
    python paramiko上传文件夹到linux
    filebeat自定义索引名,filebeat索引模板
    mydumper
    mysql误删ibd文件
    mysql update多字段时引发的一个问题
  • 原文地址:https://www.cnblogs.com/woshuaile/p/13330694.html
Copyright © 2011-2022 走看看