2015-06-10 97 views
3

從Web服務引用(「)中獲取數據的時候,當我使用Rest模板時,我的測試web服務在郵件服務器上顯示正確的字符,我試着編碼UTF -8,但沒有成功RestTemplate編碼問題

我查了下,從Web服務提供者在編碼:

的Cache-Control→私人 連接→關閉 內容編碼gzip的→ 的Content-Length→3407 的Content-Type →text/xml; charset = 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 =新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()); 

回答

0

您需要爲您的RestTemplate添加一個用於UTF-8編碼字符串的HttpMessageConverter。像這樣的東西會爲你做:

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