在spring mvc中执行post请求时出错

时间:2016-02-03 18:33:44

标签: spring rest spring-mvc

在邮递员中执行以下发布请求时:

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版本。

1 个答案:

答案 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