2012-10-30 61 views
0
String Stringifiedjson = new Gson().toJson(user); 
Log.d("SpringAndroid", Stringifiedjson); 

HttpHeaders requestHeaders = new HttpHeaders(); 
requestHeaders.setAccept(Collections.singletonList(new 
     MediaType("application", "json"))); 

HttpEntity <? > requestEntity = new HttpEntity <Object> 
     (Stringifiedjson, requestHeaders); 

GsonHttpMessageConverter messageConverter = new GsonHttpMessageConverter(); 
List < HttpMessageConverter <? >> messageConverters = 
     new ArrayList < HttpMessageConverter <? >>(); 
messageConverters.add(messageConverter); 

RestTemplate restTemplate = new RestTemplate(); 
restTemplate.setMessageConverters(messageConverters); 

try { 
    ResponseEntity<String> responseEntity = restTemplate. 
     exchange(url, HttpMethod.POST, requestEntity, String.class);    
} 

我得到一個400錯誤請求400錯誤的請求,但是當我在我的小提琴手發送Stringifiedjson。我收到一個有效的response。現在如何使用RestTemplate發佈GSON對象HTTPClientErrorException:使用Spring REST模板

回答

0

我認爲問題可能與您的http請求標頭 下面的工作適合我。

HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_JSON); 
1

我有同樣的問題。我通過傳遞Object而不是包含該Object的JSON表示的字符串來解決它。

總之,我改變了:

String jsonObject = convertToJSON(myObject); 
HttpEntity <? > requestEntity = new HttpEntity <String> 
     (jsonObject, requestHeaders); 

要:

HttpEntity <? > requestEntity = new HttpEntity <MyObject> 
     (myObject, requestHeaders); 

爲MyObject在這種情況下是java bean的我想在控制器的@RequestBody參數被逮住。