2017-05-23 152 views
0

我有以下控制器:「狀態」:415, 「錯誤」: 「不支持的媒體類型」

@PostMapping(value = {"/test/set_timeout"}) 
    @ResponseBody 
    public void setAlertTimeout(@RequestBody Long timeout) { 

和我做下面的郵差要求: enter image description here

從錯誤文本:

{"timestamp":1495560868392,"status":415,"error":"Unsupported Media Type","exception":"org.springframework.web.HttpMediaTypeNotSupportedException","message":"Content type 'multipart/form-data;boundary=----WebKitFormBoundary9IbVq5JAKxCYUs7P;charset=UTF-8' not supported","path":"/test/set_timeout"} 

問題的原因以及如何發送請求正確?

P.S.

如果使用

public static class LongWrapper{ 
     private long timeout; 

     public long getTimeout() { 
      return timeout; 
     } 

     public void setTimeout(long timeout) { 
      this.timeout = timeout; 
     } 
    } 

,而不是龍,並通過JSON({"timeout":"2"}) - 它的工作原理正確

+0

請檢查此: https://stackoverflow.com/questions/43753357/http-status-415-post-json-data-to-spring-mvc-4-using-ajax-also-used-spring- sec?answertab = votes#tab-top – Zionz

回答

0

當讀取json的內容類型應該是application/JSON。

+0

你在哪裏看到json? – gstackoverflow

0

如果需要使用的應用程序/ JSON類型和在控制器的方法寫在下面的代碼: -

@RequestMapping(method = RequestMethod.POST, produces = "application/json", consumes = "application/json") 
    public RestResponse save(@RequestParam("timestamp") String timestamp, @RequestParam("status") String status) { 
+0

我想用身體 – gstackoverflow

+0

你爲什麼想用json? – gstackoverflow

+0

使用'RequestBody' – Sharma

0

@RequestBody用於反序列化JSONPOJO。如果你需要表單數據提交到控制器嘗試像

@PostMapping(value = {"/test/set_timeout"}) 
@ResponseBody 
public void setAlertTimeout(HttpServletRequest request) { 
    Long l = request.getParameter("timeout"); 
    // continue 
} 
0

在你的要求,你是在一個多/表單數據體發送超時屬性。 在postman中,爲body選擇選項'raw',並將內容類型設置爲application/json。然後輸入以下爲主體內容:

{timeout: 4} 

你也應該設置消耗的MediaType控制器上。 (雖然它可能會自動解析爲json)例如:

@PostMapping(value = {"/test/set_timeout"}, consumes = {MediaType.APPLICATION_JSON_VALUE}) 
0

沒有必要手動添加內容類型標頭。你壓倒Postman設定的價值。只需在POST請求中選擇表單數據併發送請求以查看它是否有效。

相關問題