最近使用RestTemplate發送post請求,遇到了很多問題,如轉換httpMessage失敗、中文亂碼等,調了好久才找到下面較為簡便的方法:
1 RestTemplate restTemplate = new RestTemplate(); 2 HttpHeaders headers = new HttpHeaders(); 3 MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); 4 headers.setContentType(type); 5 headers.add("Accept", MediaType.APPLICATION_JSON.toString()); 6 7 JSONObject jsonObj = JSONObject.fromObject(params); 8 9 HttpEntity<String> formEntity = new HttpEntity<String>(jsonObj.toString(), headers); 10 11 String result = restTemplate.postForObject(url, formEntity, String.class);
如果直接使用在postForObject中把對象傳入很容易出現no suitable HttpMessageConverter found for request type的錯誤,建議直接先轉成字符串,見jsonObj.otString(),網上有人說設置RestTemplate的HttpMessageConverter,試了一下要引入各種包。另外要注意中文編碼問題,網上有人說StringHttpMessageConverter默認使用ISO-8859-1,要指定為UTF-8編碼,自己嘗試沒有成功,最后通過指定contentType的方式解決了。
