我收到以下错误;我尝试了所有步骤,但没有得到解决:
HTTP Status 415 – Unsupported Media Type
我正在尝试将JSON对象发送到@Requestbody
<%@page import="org.json.JSONObject"%>
<%@ page language="java" contentType="application/json charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Welcome</h1>
<a href="./getRegister">Register</a>
<a href="./delete?id=1">Delete</a>
<%
JSONObject obj = new JSONObject();
obj.put("id", "1");
obj.put("name", "ABC");
%>
<form action="./jsonreq" method="post">
<input type="hidden" name="obj" id="obj" value="<%=obj%>">
<input type="submit" value="Submit"/>
</form>
</body>
</html>
2)控制器:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.springhibernate.bean.Employee;
import com.springhibernate.service.EmployeeService;
@Controller
public class RegistrationController {
@RequestMapping(path="/jsonreq", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Employee json(@RequestBody Employee obj)
{
System.out.println("JSON"+obj.toString());
return obj;
}
}
答案 0 :(得分:0)
您的状态为415,因为浏览器正在将内容类型为include_type_name
的请求发送到仅接受application/x-www-form-urlencoded
的控制器方法。
问一下您是否真的需要以这种方式(而不是作为表单的一部分)发送JSON数据。
如果这样做,完成此操作的一种方法是使用Javascript将来自表单(或其他位置)的数据编译为JSON,然后进行XMLHttpRequest发布到您的服务器。
另一种较不理想的方法是删除对控制器方法的application/json
约束,将参数更改为consumes
并使用自动@RequestParam("obj") String obj
使用Autowired ObjectMapper在控制器方法中手动解析响应}}。