使用JAX-RS将JSON对象发送到Java后端

时间:2017-01-11 10:27:30

标签: java json ajax rest jax-rs

我尝试使用Ajax和JAX RS将JSON对象发送到Java EE服务器。

当我执行客户端请求时,我收到 HTTP415 错误。

这是代码..

var obj = {nome:"a", cognome:"b"};
$.post("http://localhost:8080/MyApp/resources/Class/Method",obj).done(function(data) {
    alert( "..." + data);
})
.fail(function() {
     alert( "error" );
});

Java类:

public class Oggetto implements Serializable{

private static final long serialVersionUID = 1L;

private String nome;
private String cognome;

public Oggetto() {}

public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getCognome() {
    return cognome;
}
public void setCognome(String cognome) {
    this.cognome = cognome;
} }

和休息班:

    @POST
    @Path("/Method")
    @Consumes(MediaType.APPLICATION_JSON)
    public String Mex(final Oggetto obj) {

        return "ok";

    }

我从浏览器控制台收到错误。 HTTP415:不支持的媒体类型

我尝试使用AngularJS调用,但它是一样的。

我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:0)

您没有设置内容类型。您还需要stringify请求对象。请参阅此示例,$.ajax$post是简写)

$.ajax({
    type: "POST", 
    url: "http://localhost:8080/MyApp/resources/Class/Method",
    data: JSON.stringify(obj), 
    contentType: "application/json; charset=utf-8"      
    }
}).done(function(data){

答案 1 :(得分:0)

用您的Rest类方法注释 @Consumes(MediaType.APPLICATION_JSON) 所以它只期望请求的Content-Type是application / json。

删除@Consumes(MediaType.APPLICATION_JSON)或发送带有请求的Content-Type,如pedrofb所示。