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 错误请求,但是当我发送到Stringifiedjson我的提琴手时。我得到一个有效的response. 现在如何使用 RestTemplate 发布 GSON 对象

4

2 回答 2

1

我有同样的问题。我通过传递对象本身而不是包含该对象的 JSON 表示的字符串来解决它。

简而言之,我改变了:

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

至:

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

在这种情况下,MyObject 是我希望在 Controller 的 @RequestBody 参数中捕获的 java bean。

于 2014-07-24T17:42:36.270 回答
0

我认为问题可能出在您的 http 请求标头以下对我有用。

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
于 2012-10-30T15:24:23.300 回答