无法加载资源:服务器在Java RESTful Web服务调用

时间:2016-09-01 12:09:57

标签: java jquery json rest

我在我的测试html页面中有以下javascript将ajax请求发送到我使用netbeans构建的java restful web服务(主要是通过使用'Restful web services from database'功能自动生成)。 这是我的测试html页面中的ajax查询:

$(function(){
$('.message-button').on('click', function(e){

    var resultDiv = $("#resultDivContainer");

      $.ajax({
                    headers: { 'Accept': 'application/json',
                        'Content-Type': 'application/json' 
                    },
                    'type': 'POST',
                    'url':  'http://localhost:8080/xxxAPI/api/activity',
                    'data': { "baseItemId": "2" },
                    'dataType':'json',
                    'success': function(data) {
                        var xmlstr = data.xml ? data.xml : (new XMLSerializer()).serializeToString(data);
                        $("#resultDivContainer").text(xmlstr);
                    },
                    'error': function(jqXHR, textStatus, errorThrown) {
                        alert(' Error in processing! '+textStatus + 'error: ' + errorThrown);
                    }
                });
})
});

此处是我的java代码中接受帖子请求的部分:

@POST
    @Override
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public void create(XxxxxActivity entity) {
        super.create(entity);
       }

当我从测试页面请求时(对于此版本的测试页面),我收到此错误:

  

无法加载资源:服务器响应状态为415   (不支持的媒体类型)

或此错误:

  

POST http://localhost:8080/xxxAPI/api/activity 415(不支持   媒体类型)

到目前为止,我已尝试对stackoverflow上的类似问题建议对ajax请求进行各种更改,包括将类型更改为jsonp,将json数据放在双引号中,添加标头并将数据类型更改为xml。他们都没有工作。

此外,由于我设法有时从服务器获得响应,我想知道问题是否在java代码中使用xml解析。我相信一个潜在的解决方法是添加jackson jar文件,但我不知道如何在netbeans上添加它们,因为WEB_INF中没有lib文件夹。

我还想知道jquery ajax请求是否存在任何问题。这个问题困扰了我好几天。

PS :另请注意,来自浏览器的GET请求正常。我没有在这个项目中使用过maven。

1 个答案:

答案 0 :(得分:2)

替换

'data': { "baseItemId": "2" },

'data': JSON.stringify({ "baseItemId": "2" }),

对象JSON可用here

修改

  • 添加属性contentType: 'application/json; charset=UTF-8'
  • 从ajax调用中删除属性标题。