美文网首页
关于使用RestTemplate响应体response出现中文乱

关于使用RestTemplate响应体response出现中文乱

作者: 余于鱼不是鱼鱼鱼 | 来源:发表于2022-04-06 18:24 被阅读0次

在使用RestTemplate做Http交互的时候,响应体的中文解析出来之后就乱码了,全是?????

RestTemplate配置

RestTemplate build = new RestTemplateBuilder().build();

使用RestTemplate请求之后得到的响应结果是这样的

{
    "code": 500,
    "success": false,
    "data": null,
    "msg": "??????"
}

这个问题我首先想到的是RestTemplate的MessageConverter消息转换器,首先找到RestTemplate解析response的地方
方法路径:org.springframework.web.client.HttpMessageConverterExtractor#extractData

如下图


MediaType contentType = getContentType(responseWrapper);这里获取到了response的媒体类型,然后根据这个媒体类型的编码格式去做的read

而我的请求响应的媒体类型是



注意这里的字符集编码是charset=ISO-8859-1

这里为什么会拿到charset=ISO-8859-1呢?让我们来看看,RestTemplate中StringHttpMessageConverter默认的字符集是啥

好了,屁话不多说。改一下

for (int i = 0; i < build.getMessageConverters().size(); i++) {
    if (build.getMessageConverters().get(i) instanceof StringHttpMessageConverter) {
        build.getMessageConverters().set(i, new StringHttpMessageConverter(StandardCharsets.UTF_8));
    }
    if(build.getMessageConverters().get(i) instanceof MappingJackson2HttpMessageConverter){
        ((MappingJackson2HttpMessageConverter) build.getMessageConverters().get(i))
            .setSupportedMediaTypes(ListUtil.of(MediaType.ALL));
    }
}

最终bean如下


重启并测试响应体

{
    "code": 500,
    "success": false,
    "data": null,
    "msg": "不合法的文件大小"
}

相关文章

  • 关于使用RestTemplate响应体response出现中文乱

    在使用RestTemplate做Http交互的时候,响应体的中文解析出来之后就乱码了,全是????? RestTe...

  • Response&Request&Http

    Response1.响应消息(response)组成:响应行,响应头,响应空行,响应体2.响应行组成:协议/版本 ...

  • 12-码蚁JavaWeb之Response

    一、response响应过程 牢记响应的流程图 二、学习响应 通过response设置响应行,响应头 ,响应体 设...

  • http响应

    1.包含 响应头、响应体、响应代码 2.response status code 3.response heade...

  • SpringBoot中RestTemplate的问题

    今天遇到一个奇怪的问题,使用RestTemplate发起POST请求,获取的返回体中有乱码。因为返回体中有中文。 ...

  • 2021-05-10

    关于返回的html中文 乱码的问题,在response设置编码即可 不加的话会出现下面的问题 关于使用GET或PO...

  • RestTemplate中文乱码Response问号

    RestTemplate中文乱码Response问号 背景描述 需要请求内部restful接口,那么有以下两种方式...

  • Android 网络框架之okhttp源码解析

    okhttp使用 okhttp则分为Request请求与response响应。 request请求体:每一个HTT...

  • jmeter(十三) jmeter常用断言

    响应体 响应头 1、响应断言 ✓ 常⻅的校验信息检查点:➢ 响应码 Response Code➢ 响应⽂本 Tex...

  • Response&Request

    Response&Request 一、介绍 二、作用 1 : 写响应行 2 : 写响应头 3 : 写响应体 三、解...

网友评论

      本文标题:关于使用RestTemplate响应体response出现中文乱

      本文链接:https://www.haomeiwen.com/subject/urtdsrtx.html