我正在使用 JSON 对象使用 Spring MVC。当我尝试从 RESTClient 发送 JSON 对象时,我得到
HTTP 状态 400 - 客户端发送的请求在语法上不正确 ()。
这是我的控制器
ObjectMapper mapper=new ObjectMapper();
@RequestMapping(value = "/addTask", method = RequestMethod.GET)
public ModelAndView addTask(@RequestParam("json") String json) throws JsonParseException, JsonMappingException, IOException
{
System.out.println("Json object from REST : "+json);
Task task=(Task) mapper.readValue(json, Task);
service.addService(task);
return new ModelAndView("Result");
}
我的请求网址:http://localhost:8080/Prime/addTask
我的 Json 对象:
{“taskName”:“什么都不做”,“taskId”:1234,“taskDesc”:“什么都不做”}
我还尝试在 RESTClient 中指定“Content-Type: application/json”,但仍然收到相同的错误
我最近在请求正文中使用 JSON 字符串时遇到了类似的情况,并使用了与您非常相似的 Spring 设置。就我而言,我没有指定 String 参数并自己反序列化它,而是让 Spring 这样做:
@RequestMapping(value = "/myService/{id}", method = RequestMethod.POST)
@ResponseBody
public void myService(@PathVariable(value = "id") Long id, @RequestBody MyJsonValueObject request) {
..
}
我收到 HTTP 错误 400“客户端发送的请求在语法上不正确”响应。直到我意识到没有默认构造函数@RequestBody MyJsonValueObject
所以反序列化时出现问题。但这个问题是以这种方式呈现的。
因此,如果您使用 POST 和对象,并收到这样的错误,确保你有一个默认的构造函数!添加一些 JUnit 以确保您可以反序列化该对象。
Note:我并不是说这是您收到此错误的唯一原因。原始情况仅使用 String (它确实有一个默认构造函数!),所以它有点不同。但在这两种情况下,请求 URI 似乎已映射到正确的方法,并且在尝试从 HTTP 请求中提取参数时出现了问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)