欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RestTemplate返回值中文亂碼問題

 更新時間:2024年04月19日 15:46:27   作者:偷代碼的貓  
這篇文章主要介紹了RestTemplate返回值中文亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、問題描述

使用RestTemplate發(fā)送請求,返回值中文亂碼

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

二、代碼追蹤

DEBUG過程中即時查詢返回值是在哪里調度的,數值的改變是在哪里觸發(fā)的

1、追蹤getForEntity方法,發(fā)現execute方法

2、追蹤execute方法,發(fā)現doExecute方法

3、追蹤doExecute方法,發(fā)現extractData方法

4、發(fā)現有多個接口實現,debug跳轉定位是哪個方法,好了,終于發(fā)現messageBody解析了

  • 通過上述代碼我們可以簡單判斷,RestTemplate的消息響應應該是由messageConverters控制的
  • 所以我們應該是需要對他進行賦值修改

5、分析messageConverters,看Message轉化為各種對象,諸如Byte、String之類的,我們看的是String

三、解決辦法

1、懶人解決

RestTemplate restTemplate = new RestTemplate();
//可以在上圖分析上看到StringHttpMessageConverter index=1,所以.
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

2、遍歷查詢

RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> converterList =restTemplate.getMessageConverters();
int converterIndex = -1;
for (int i=0;i<converterList.size();i++){
    if(converterList.get(i).getClass() == StringHttpMessageConverter.class){
        converterIndex = i;
        break;
    }
}
if(converterIndex !=-1){
    restTemplate.getMessageConverters().set(converterIndex, new StringHttpMessageConverter(StandardCharsets.UTF_8));
}
 
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 淺析java中Integer傳參方式的問題

    淺析java中Integer傳參方式的問題

    以下是對java中Integer傳參方式的問題進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • spring boot基于Java的容器配置講解

    spring boot基于Java的容器配置講解

    這篇文章主要介紹了spring boot基于Java的容器配置講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Spring中@RestControllerAdvice注解的使用詳解

    Spring中@RestControllerAdvice注解的使用詳解

    這篇文章主要介紹了Spring中@RestControllerAdvice注解的使用詳解,@RestControllerAdvice是一個組合注解,由@ControllerAdvice、@ResponseBody組成,而@ControllerAdvice繼承了@Component,需要的朋友可以參考下
    2024-01-01
  • Spring框架的JdbcTemplate使用

    Spring框架的JdbcTemplate使用

    它是 Spring 框架中提供的一個對象,是對原始 Jdbc API 對象的簡單封裝。本文就來介紹一下Spring框架的JdbcTemplate使用,感興趣的可以了解一下
    2021-09-09
  • IDEA教程創(chuàng)建SpringBoot前后端分離項目示例圖解

    IDEA教程創(chuàng)建SpringBoot前后端分離項目示例圖解

    在使用spring、mybatis等框架時,配置文件很復雜,有時復雜的讓人想放棄Java,使用C#。springboot出現這一切問題就都不是問題
    2021-10-10
  • java agent 使用及實現代碼

    java agent 使用及實現代碼

    java agent的作用可以在字節(jié)碼這個層面對類和方法進行修改的技術,能夠在不影響編譯的情況下,修改字節(jié)碼。本文主要給大家講解java agent 使用及實現代碼,感興趣的朋友一起看看吧
    2018-07-07
  • Windows 下安裝配置 Eclipse詳細教程

    Windows 下安裝配置 Eclipse詳細教程

    Eclipse是一款非常優(yōu)秀的開源IDE,非常適合Java開發(fā),由于支持插件技術,受到了越來越多的開發(fā)者的歡迎。配合眾多令人眼花繚亂的插件,完全可以滿足從企業(yè)級Java應用到手機終端Java游戲的開發(fā)。本文將帶您手把手步入Eclipse的廣闊天地
    2016-09-09
  • JAVA實現紅包分發(fā)的示例代碼

    JAVA實現紅包分發(fā)的示例代碼

    這篇文章主要介紹了JAVA實現紅包分發(fā)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • mybatis-plus @select動態(tài)查詢方式

    mybatis-plus @select動態(tài)查詢方式

    這篇文章主要介紹了mybatis-plus @select動態(tài)查詢方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java完美實現2048小游戲

    Java完美實現2048小游戲

    本文給大家分享的是一則根據網友的代碼改編的2048小游戲的源碼,個人認為已經非常完美了,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03

最新評論