RestTemplate编码问题

时间:2015-06-10 17:39:27

标签: java encoding resttemplate

当我使用Rest Template时,从Web服务引用(")中获取数据的时间是(?)。我测试了邮递员在Chrome上的网络服务,它给出了正确的字符。我尝试编码UTF-8,但没有成功。

我检查了以下是来自网络服务提供商的编码:

缓存控制→私有 连接→关闭 内容编码→gzip 内容长度→3407 Content-Type→text / xml;字符集= ISO-8859-1 日期→星期三,2015年6月10日13:35:53 GMT 服务器→Google Search Appliance 变化→接受编码 X-Frame-Options→SAMEORIGIN x-content-type-options→nosniff x-xss-protection→1;模式=块

这是我的代码:

RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    MediaType mediaType = new MediaType("text", "xml", Charset.forName("ISO-8859-1"));

    headers.set("Accept", "text/xml; charset=ISO-8859-1");
    headers.setContentType(mediaType);
    headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8")));
    headers.setAccept(Arrays.asList(mediaType));

    ResponseEntity<String> res = restTemplate.exchange(gsaSearchUrl, HttpMethod.GET, new HttpEntity<String>(headers), String.class);


    System.out.println(res.getBody());

1 个答案:

答案 0 :(得分:0)

您需要为RestTemplate添加一个用于UTF-8编码字符串的HttpMessageConverter。这样的事情会为你做到:

    restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));