Java RequestMapping POST API存在问题?

Java RequestMapping POST API存在问题?,java,spring,rest,Java,Spring,Rest,我搞不清楚我到底做错了什么。我正在使用应用程序“邮递员”向服务发送请求。该参数是一个非常简单的POJO,如下所示。当我尝试发送请求时,我得到一个响应:“服务器拒绝了此请求,因为请求实体的格式不受请求方法的请求资源的支持” 用于请求的类: public class LoginAttempt { private String userName; private String password; public String getUserName()

我搞不清楚我到底做错了什么。我正在使用应用程序“邮递员”向服务发送请求。该参数是一个非常简单的POJO,如下所示。当我尝试发送请求时,我得到一个响应:“服务器拒绝了此请求,因为请求实体的格式不受请求方法的请求资源的支持”

用于请求的类:

 public class LoginAttempt {

        private String userName;
        private String password;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }
控制器中的API:

@RequestMapping(value="/validate", method=RequestMethod.POST, produces="application/json") 
public boolean validateUser(@RequestBody LoginAttempt login) {
    System.out.println("Login attempt for user " + login.getUserName() + login.getPassword());
    return true;
}

只需尝试添加此bean:

<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="prefixJson" value="false"/>
    <property name="supportedMediaTypes" value="application/json"/>
</bean>

只需尝试添加此bean:

<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="prefixJson" value="false"/>
    <property name="supportedMediaTypes" value="application/json"/>
</bean>

当内容类型为application/x-www-form-urlencoded时,用于@RequestBody注释参数的FormHttpMessageConverter不能像@ModelAttribute那样绑定目标类)。 因此,您需要@modeldattribute而不是@RequestBody

使用@ModelAttribute注释而不是像这样使用@RequestBody

     public boolean validateUser(@ModelAttribute LoginAttempt login) 
或者,您可以创建一个单独的方法表单,使用适当的headers属性处理表单数据,如下所示:

    @RequestMapping(value="/validate", method=RequestMethod.POST, headers = "content-type=application/x-www-form-urlencoded" produces="application/json")
当内容类型为application/x-www-form-urlencoded时,用于@RequestBody注释参数的FormHttpMessageConverter不能像@ModelAttribute那样绑定目标类)。 因此,您需要@modeldattribute而不是@RequestBody

使用@ModelAttribute注释而不是像这样使用@RequestBody

     public boolean validateUser(@ModelAttribute LoginAttempt login) 
或者,您可以创建一个单独的方法表单,使用适当的headers属性处理表单数据,如下所示:

    @RequestMapping(value="/validate", method=RequestMethod.POST, headers = "content-type=application/x-www-form-urlencoded" produces="application/json")

谢谢,就这样。除了我使用的是Spring4.X,所以它是org.springframework.http.converter.json.mappingjackson2httpmessageconverterhanks。除了我使用的是Spring 4.X,所以是org.springframework.http.converter.json.mappingjackson2httpmessageconverterhanks从后端删除了错误,但出于某些原因,现在log语句正在为实例变量打印两个空值感谢您从后端删除了错误,但现在log语句正在打印出于某种原因,实例变量有两个空值