基于 problem with x-www-form-urlencoded with Spring @Controller 的答案
我写了下面的 @Controller 方法
@RequestMapping(value = "/{email}/authenticate", method = RequestMethod.POST
, produces = {"application/json", "application/xml"}
, consumes = {"application/x-www-form-urlencoded"}
)
public
@ResponseBody
Representation authenticate(@PathVariable("email") String anEmailAddress,
@RequestBody MultiValueMap paramMap)
throws Exception {
if(paramMap == null || paramMap.get("password") == null) {
throw new IllegalArgumentException("Password not provided");
}
}
请求失败并出现以下错误
{
"timestamp": 1447911866786,
"status": 415,
"error": "Unsupported Media Type",
"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
"message": "Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported",
"path": "/users/usermail%40gmail.com/authenticate"
}
[PS: Jersey 更友好,但由于这里的实际限制现在无法使用它]
原文由 Somasundaram Sekar 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题是当我们使用 application/x-www-form-urlencoded 时,Spring 不会将其理解为 RequestBody。所以,如果我们想使用它,我们必须删除 @RequestBody 注释。
然后尝试以下操作:
请注意,删除了注释 @RequestBody
_答案_: 内容类型为 application/x-www-form-urlencoded 的 Http Post 请求在 Spring 中不起作用