【问题标题】:415 Unsuppoted Media Type when I try send JSON to Spring MVC Controller当我尝试将 JSON 发送到 Spring MVC 控制器时出现 415 Unsupported Media Type
【发布时间】:2014-03-09 16:08:37
【问题描述】:

当我尝试将 JSON 发送到 Spring MVC 控制器时,我得到:

POST http://localhost:8084/springAndHibernate/greet 415 (Unsupported Media Type)

这里是方法的声明,应该 ,,catch” JSON:

@RequestMapping(headers ={"Accept=application/json"},value="/greet")
public String greetUser(@RequestBody Logins newLogin){

我认为它应该将 JSON 映射到类 Logins.java,它在这里:

package newpackage;

public class Logins  implements java.io.Serializable {


 private int id;
 private String login;
 private String password;

public Logins() {
}


public Logins(int id) {
    this.id = id;
}
public Logins(int id, String login, String password) {
   this.id = id;
   this.login = login;
   this.password = password;
}

public int getId() {
    return this.id;
}

public void setId(int id) {
    this.id = id;
}
public String getLogin() {
    return this.login;
}

public void setLogin(String login) {
    this.login = login;
}
public String getPassword() {
    return this.password;
}

public void setPassword(String password) {
    this.password = password;
}

}

我以这种方式使用 jQuery ajax() 方法发送 POST:

 function onGreetingButtonClicked(e){

                var contextPath='<%=request.getContextPath()%>';
                jsonData = {
                    id: 0,
                    login: $("#loginInput").val(),
                    password: $("#passwordInput").val()
                };
                console.log(JSON.stringify(jsonData));
                console.log((contextPath + "/greet").toString());
                urlAddress = (contextPath + "/greet")

                $.ajax({type: "POST",
                    url: urlAddress, 
                    data: JSON.stringify(jsonData),
                    success: onSuccess,
                    contentType: "application/jsonp; charset=utf-8",
                    dataType: null,
                    traditional: true});
                e.preventDefault();              
            }
            function onSuccess(data){
                alert(data);
            }

当我删除时

@RequestBody

from 方法没有错误,但是我得到了带有 null 作为字段值的 Logins 对象。

如果有人愿意帮助我,我会很高兴, 提前谢谢你。

【问题讨论】:

  • 首先将您的日志级别设置为调试。 Spring 应该会告诉你出了什么问题。
  • @Sotirios Delimanolis ,我该怎么做?

标签: java jquery json spring controller


【解决方案1】:

根据其他各种帖子,您应该将 contentType 设置为 "application/javascript"

我也看到了使用"application/json"的建议,但是查看Wikipedia page,很明显JSON-P实际上不是有效的JSON,因此MIME-type是不正确的,尽管有些浏览器显然知道如何处理错误。

无论如何,"application/jsonp" 是不正确的,因为它不是注册的 MIME 类型。

【讨论】:

    猜你喜欢
    • 2015-07-25
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多