【问题标题】:400 BAD Request when using Spring RestTemplate to POST使用 Spring RestTemplate POST 时出现 400 BAD Request
【发布时间】:2015-04-23 09:52:57
【问题描述】:

我尝试将运输状态从我的数据库发送到电子商务网站,但我得到:

400 错误请求错误。

有人有什么想法吗?

HashMap orderItems = new HashMap<String, String>();
orderItems.put("id","558443685");
ArrayList<HashMap<String,String>> orderItemsArray = new ArrayList<HashMap<String,String>>();
orderItemsArray.add(orderItems);
HashMap contentOrderFulfillment = new HashMap<String, Object>();
contentOrderFulfillment.put("tracking_number", null);
contentOrderFulfillment.put("line_items",orderItemsArray);
HashMap orderFulfillment = new HashMap<String, Object>();
orderFulfillment.put("fulfillment", contentOrderFulfillment);

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());

HttpHeaders headers = new HttpHeaders();
headers.add("X-ABC-Access-Token", "9a4d5c56a7edf1ac5bb17aa1c");
headers.add("Content-Type", MediaType.APPLICATION_JSON.toString());
headers.add("Accept", MediaType.APPLICATION_JSON.toString());

MultiValueMap<String, Object> requestBody = new LinkedMultiValueMap<String, Object>();
requestBody.add("fulfillment", orderFulfillment);
HttpEntity formEntity = new HttpEntity<MultiValueMap<String, Object>>(requestBody, headers);
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<String> responseEntity = restTemplate.exchange("https://mysite.abc.com/admin/orders/406287121/fulfillments.json",HttpMethod.POST,  formEntity,String.class);
System.out.println("Response="+responseEntity.getBody());

【问题讨论】:

    标签: java spring resttemplate


    【解决方案1】:

    400 响应可能是由您的请求中的许多问题引起的。错误的参数或类似的东西。首先从命令行尝试请求 - 使用 curl 或其他东西。当你看到它工作时,检查来自 java 的请求是否发送了完全相同的参数。

    【讨论】:

      【解决方案2】:

      如果您扩展该处理程序,请查看ResponseEntityExceptionHandler(或任何后代)。

      处理程序的大多数方法不包含消息正文,因此您可以扩展该类,覆盖处理您想要获取错误消息的异常的方法,并提供消息正文到handleExceptionInternal(..) 方法。

      另见:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        • 2014-05-14
        • 1970-01-01
        • 2023-03-21
        • 2012-12-29
        • 2011-05-31
        相关资源
        最近更新 更多