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 Bad Requestを受け取っています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 は、コントローラーの @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 に答える