2015-04-23 191 views
-2

我尝试从我的数据库的电子商务网站发送发货状态,但我得到:400错误的请求为POST

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()); 

回答

0

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

0

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

处理程序的大部分方法都不包含消息体,因此解决方案是让您扩展该类,重写处理您希望获取错误消息的异常的方法,并提供消息体到handleExceptionInternal(..)方法。

参见: