2015-03-03 288 views
2

我目前正在絞盡腦汁,爲什麼包括一個參數@RequestBody汽車車破了我的終點。春季啓動HttpMediaTypeNotSupportedException

我對Spring引導非常陌生,並試圖將json字符串發佈到我的其餘控制器。

這裏是我的控制器:

@RestController 
@RequestMapping("/v1/car") 
@EnableWebMvc 
public class CarController { 

private static final Log LOGGER = LogFactory.getLog(CarController.class); 

@Autowired 
private CarService carService; 


@RequestMapping(value="/{accountId}", method = RequestMethod.POST, consumes={"text/plain", "application/*"}) 
ResponseEntity<?> start(@PathVariable final Integer accountId, @RequestBody Car car) { 
    System.out.println("E: "+accountId); 
    final long tid = Thread.currentThread().getId(); 
    final Boolean status = this.smarterWorkFlowService.startWorkFlow(accountId, car); 
    return new ResponseEntity<Car>(new Car(), HttpStatus.ACCEPTED); 
} 
} 

我使用傑克遜作爲我的JSON解析器了。我找了幾個小時,發現沒有什麼能夠幫助我解釋爲什麼我得到415迴應。

{ "timestamp": 1425341476013, "status": 415, "error": "Unsupported Media Type", "exception": "org.springframework.web.HttpMediaTypeNotSupportedException", "message": "Unsupported Media Type", "path": "/v1/experiences/12" }

感謝您的幫助!

回答

1

首先,在春季開機@EnableWebMvc是不需要的。然後,如果您的REST服務需要產生JSON或XML使用

@RequestMapping(value = "properties", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}, method = RequestMethod.POST) 

測試服務

HttpHeaders headers = new HttpHeaders(); 
headers.add("Content-type", header); 
headers.add("Accept", header); 

UIProperty uiProperty = new UIProperty(); 
uiProperty.setPassword("emelendez"); 
uiProperty.setUser("emelendez"); 

HttpEntity entity = new HttpEntity(uiProperty, headers); 

RestTemplate restTemplate = new RestTemplate(); 
ResponseEntity<String> response = restTemplate.exchange("http://localhost:8080/properties/1", HttpMethod.POST, entity,String.class); 
return response.getBody(); 

通過application/jsonapplication/xml Replace頭。如果你是全光照XML,如果你使用JSON添加這種依賴性

<dependency> 
    <groupId>com.fasterxml.jackson.dataformat</groupId> 
    <artifactId>jackson-dataformat-xml</artifactId> 
</dependency> 
+0

謝謝你的迴應!該服務只需要生成JSON。我確實添加了生產參數,但是當我測試POSTMan chrome應用程序時仍然會出現415錯誤。雖然我的休息服務需要接受POST方法。我已驗證我發送了正確的內容類型。 – user1026498 2015-03-03 14:05:04

+0

對不起,我忘了更新我的問題,現在您可以嘗試一些更改。 – 2015-03-03 14:33:52

0

,刪除您@RequestMappingconsumes={...}一部分,請確保你實際上執行POST JSON和設置Content-typeapplication/json