【问题标题】:HTTPClientErrorException: 400 Bad Request using Spring REST templateHTTPClientErrorException:使用 Spring REST 模板的 400 错误请求
【发布时间】:2012-10-30 15:09:08
【问题描述】:
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 对象

【问题讨论】:

    标签: java android spring gson


    【解决方案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。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-19
        • 1970-01-01
        • 2019-10-31
        • 1970-01-01
        • 2020-05-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-20
        • 1970-01-01
        相关资源
        最近更新 更多