记录下RestTemplate请求接口返回中文乱码---尝试4种方案终于解决

记录下RestTemplate请求接口返回中文乱码---尝试4中方案终于解决

package com.test;

import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.njia.constant.ConnectTimeoutConstant;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication(scanBasePackages = {"com.test"})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public RestTemplate restTemplate(){
        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
        httpRequestFactory.setConnectionRequestTimeout(ConnectTimeoutConstant.connectTimeout);
        httpRequestFactory.setConnectTimeout(ConnectTimeoutConstant.connectTimeout);
        httpRequestFactory.setReadTimeout(ConnectTimeoutConstant.connectTimeout);
        RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
        //第四种方案,成功{"name":"item_full_title","value":"2020夏季新款女款连衣裙修身V领连衣裙韩版chic中长裙子"}
        restTemplate.getMessageConverters().clear();
        restTemplate.getMessageConverters().add(new FastJsonHttpMessageConverter());

//第一种尝试方案,失败{"name":"item_full_title","value":"2020\u590f\u5b63\u65b0\u6b3e"}
//           restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));

//第二种尝试方案,失败{"name":"item_full_title","value":"2020\u590f\u5b63\u65b0\u6b3e"}
//        List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
//        httpMessageConverters.stream().forEach(httpMessageConverter -> {
//            if(httpMessageConverter instanceof StringHttpMessageConverter){
//                StringHttpMessageConverter messageConverter = (StringHttpMessageConverter) httpMessageConverter;
//                messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
//            }
//        });

//第三种尝试方案,失败{"name":"item_full_title","value":"2020\u590f\u5b63\u65b0\u6b3e"}
//        StringHttpMessageConverter t = new StringHttpMessageConverter();
//        //设置为false就可以修改header中的accept-charset属性
//        t.setWriteAcceptCharset(false);
//        t.setDefaultCharset(StandardCharsets.UTF_8);
//        restTemplate.getMessageConverters().add(0,t);

        return restTemplate;
    }
}

各种搜索网上资料各种尝试终于ok了.......

 String itemId =itemResultDO.getItemId();
        String platform=itemResultDO.getPlatform();
       
        url="http://*******?itemId="+itemId+"&Type=0&platform="+platform+"&page=1&limit=10";

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
        headers.add("Cookie", "experimentation_subject_id=25967cf; Hm_lvt_05134tgtrgthhgr75612c=1619073450,1619430893; session=eyJfcGVyb32YXNzdc3QiOiJbXSIsInVzZXJuYW1lIe2UifQ.YJzHWw.N_HWzr4334Ie0VAI0zJA4434tc");

        ResponseEntity<String> response = restTemplate.exchange(
                url,
                HttpMethod.GET,
                new HttpEntity<String>(headers),
                String.class);
        System.out.println("返回信息为: "+response.getBody());

返回的数据:

[2021-05-13 16:23:24,750],[INFO],{},org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/],Initializing Spring DispatcherServlet 'dispatcherServlet'
[2021-05-13 16:23:24,751],[INFO],{},org.springframework.web.servlet.DispatcherServlet,Initializing Servlet 'dispatcherServlet'
[2021-05-13 16:23:24,761],[INFO],{},org.springframework.web.servlet.DispatcherServlet,Completed initialization in 10 ms
返回信息为: {"code":0,"count":7,"data":[{"name":"item_id","value":"6917920649675846853"},{"name":"item_full_title","value":"2020夏季新款女款连衣裙修身V领连衣裙韩版chic中长裙子"},{"name":"item_price","value":63900},{"name":"item_pic_url","value":"https://a.vpimg3.com/upload/merchandise/pdcvis/107361/2019/0628/120/994f3b2d-2b2c-4d15-9356-9a9d2fd466ff.jpg"},{"name":"item_discount_price","value":12900},{"name":"guide_desc","value":"唯品自营"},{"name":"commission_rate","value":800}],"msg":"success"}

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值