[英]“status”:415,“error”:“Unsupported Media Type”
我有以下控制器:
@PostMapping(value = {"/test/set_timeout"})
@ResponseBody
public void setAlertTimeout(@RequestBody Long timeout) {
錯誤文字:
{"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"}
問題的原因是什么?如何正確發送請求?
PS
如果使用
public static class LongWrapper{
private long timeout;
public long getTimeout() {
return timeout;
}
public void setTimeout(long timeout) {
this.timeout = timeout;
}
}
而不是Long並傳遞json( {"timeout":"2"}
)-它可以正常工作
讀取json時,您的內容類型應為application / json。
如果您需要使用application / json類型並在控制器方法中編寫以下代碼:
@RequestMapping(method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
public RestResponse save(@RequestParam("timestamp") String timestamp, @RequestParam("status") String status) {
@RequestBody
用於將JSON
反序列化為POJO
。 如果您需要向控制器提交表單數據,請嘗試類似
@PostMapping(value = {"/test/set_timeout"})
@ResponseBody
public void setAlertTimeout(HttpServletRequest request) {
Long l = request.getParameter("timeout");
// continue
}
在您的請求中,您將在multipart / form-data主體中發送timeout屬性。 在郵遞員中,為正文選擇選項“原始”,然后將內容類型設置為application / json。 然后輸入以下內容作為正文內容:
{timeout: 4}
您還應該在控制器上設置消耗MediaType。 (盡管可能會自動解析為json)例如:
@PostMapping(value = {"/test/set_timeout"}, consumes = {MediaType.APPLICATION_JSON_VALUE})
無需手動添加內容類型標頭。 您正在覆蓋Postman設置的值。 只需在POST請求中選擇表單數據,然后發送您的請求以查看其是否有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.