415通过ajax调用RESTful java Web服务时不支持的媒体类型

时间:2015-05-20 10:23:54

标签: java ajax json rest

我正在尝试一个示例,它调用一个以'name'作为输入的restful java web服务并发布'hello name',如下所示:

     @Path("/login")
     public class LoginWS {
     @POST
     @Produces(MediaType.APPLICATION_JSON)
     public NameBean getHello( NameBean nb ) throws JSONException{
         System.out.println("starting pt");
         String output="Hello "+ nb.getName();
         nb.setName(output);
         return nb;
     }
}

这是我的NameBean类,用于映射JSON数据:

public class NameBean {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

在客户端,我使用ajax来调用它:

function Invoke(){

        $.ajax({
            type: "POST",
            url: 'http://localhost:8080/OnlineJudgeDemo/api/login/',
            data: JSON.stringify({
                "name" : $("#haha").val()
            }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data, textStatus, jqXHR){
                alert("wow!");
            },
            error: function(jqXHR, textStatus, errorThrown){
                alert("sorry! " + textStatus+errorThrown);
            }
        });
    }

但是,当调用invoke()函数时,它会给出415 Unsupported Media Type错误。

我已经检查了很多关于同一问题的其他Stack Overflow页面,但似乎都没有解决我的问题。

有人可以帮助我知道我哪里出错吗?

1 个答案:

答案 0 :(得分:0)

尝试按如下方式重写您的服务:

 @Path("/login")
 public class LoginWS {

   @POST
   @Consumes(MediaType.APPLICATION_JSON)
   @Produces(MediaType.APPLICATION_JSON)
   public NameBean getHello( NameBean nb ) throws JSONException{
     System.out.println("starting pt");
     String output="Hello "+ nb.getName();
     nb.setName(output);
     return nb;
   }

 }