This question already has answers here:
Jersey 415 Unsupported Media Type
                                
                                    (3个答案)
                                
                        
                                3年前关闭。
            
                    
我知道有些线程有相同的问题,但是我无法使其正常运行。我对此还很陌生。

我有一个运行的JAX-RS服务器:

GET方法有效。 POST方法没有。

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response post(Movie movie){
    System.out.println("In the POST method");

    String result = movie.toString();

    return Response.status(201).entity(result).build();


我想在Oracle JET Client中发表文章:

addMovie = function(){
    console.log("post sent");
      $.ajax({
        type: "POST",
        url: "http://localhost:8080/MovieRestService/resources/movies",
        headers: {

            "Content-Type": "application/json"
        },
        data:
                    {
                        id: 2,
                        name: "test",
                        director: "test",
                        year: 234
                    },
        success: "success",
        dataType: 'application/json'
      });


它一直给我一个415 Unsupported Media Type错误。
我觉得有些奇怪的是,响应头中的内容类型为text / html Content-Type: text/htlm

有人有解决方案吗?

编辑:

经过大量的网上搜索之后,我终于设法找出了真正的问题是什么……Glassfish 4.1.1似乎有一个错误,这是在向我的服务器发帖时导致问题的原因……

最佳答案

这应该工作

    var url = 'http://localhost:8080/MovieRestService/resources/movies';
    var sucessCallback = function(response) {...}
    var data = JSON.stringify({
                    id: 2,
                    name: "test",
                    director: "test",
                    year: 234
                });
    $.ajax({
        url: url,
        method: POST,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: data,
        cache: false,
        context: this,
    }).success(sucessCallback);

10-04 19:33