使用POST方法的webservice响应“不支持的媒体类型”

时间:2014-05-21 03:47:19

标签: java ajax json web-services jersey

我尝试使用Jersey了解Java中的Webservice。 我按照教程:http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/

但我的例子有些问题。

以下是webservice中的代码,

@POST
    @Path("/abc")
    @Consumes({MediaType.APPLICATION_JSON,
        MediaType.APPLICATION_FORM_URLENCODED
        })
    public Response createTrackInJSON(Track track) {
        String result = "Track saved : " + track.toString();
        System.out.println(result);
        return Response.status(201).entity(result).build();

    }

,这是来自客户:

var newTrack = {
                    title : "aaaa",
                    singer : "bbbb"
                };

             $.ajax({
                url : 'http://localhost:8080/Teamp3/rest/hello/abc/',
                type : 'POST',
                data :  { track : JSON.stringify(newTrack)},

                success : function(result) {
                    alert("success");
                    document.getElementById("lblRes_POST").innerHTML = result;
                },
                error : function(jqXHR, textStatus, errorThrown) {
                    alert("jqXHR - " + jqXHR.statusText + "\n" + "textStatus - "
                            + textStatus + "\n" + "errorThrown - " + errorThrown);

                }
            });

它会回复:"不支持的媒体类型"

如果我把:                 contentType:' application / json',                 dataType:' json',

ajax代码中,它仍然会注意到该消息。 你能不能给我一些解决方案。谢谢。

1 个答案:

答案 0 :(得分:0)

尝试更改客户端,如下所示:

  1. 将数据:{track:JSON.stringify(newTrack)}更改为数据:JSON.stringify(newTrack)
  2. 为了更好的建议,请在网络标签上向我们发送网络捕获。

    希望这个帮助