在邮递员中执行以下发布请求时:
http://localhost:8080/FinalSmsApi/rest/requestSms/hello
带参数用户名,密码和电话。 我收到以下错误:
HTTP Status 415: The server refused this request because the request entity is in a format not supported by the requested resource for the requested method
这是控制器:
@RestController
public class MainController1 {
@RequestMapping(value = "/hello", method = POST, consumes = "application/json")
public void Register(@RequestParam(value = "username") String username,
@RequestParam(value = "password") String password,
@RequestParam(value = "phone") String phone) {...}
}
使用Spring 4版本。
答案 0 :(得分:1)
HTTP状态415:服务器拒绝了此请求...
这意味着您的终端无法处理传递的Request Body
。此错误有两个主要原因:要么不指定请求正文的类型,要么传递了无效数据。
通过向请求标头添加Content-Type
标头,可以解决此问题:
Content-Type: application/json
此外,您还没有在public void Register(..)
方法中捕获请求正文。如果您计划采用这种方式,最好放弃consumes
属性并使用Query Parameters
传递所有参数,就像您一样。
另一种方法是定义一个资源类,如:
public class User {
private String username;
private String password;
private String phone;
// getters and setters
}
然后更改您的控制器以捕获请求正文,如下所示:
@RequestMapping(value = "/hello", method = POST, consumes = "application/json")
public void Register(@RequestBody User user) {...}
最后,发送一个JSON
表示以及您的请求:
curl -XPOST -H'Content-Type: application/json' --data '{"username": "", "password": "", "phone": ""}' http://localhost:8080/hello