Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载资源失败:服务器在Java RESTful web服务调用中响应状态为415(不支持的媒体类型)_Java_Jquery_Json_Rest - Fatal编程技术网

加载资源失败:服务器在Java RESTful web服务调用中响应状态为415(不支持的媒体类型)

加载资源失败:服务器在Java RESTful web服务调用中响应状态为415(不支持的媒体类型),java,jquery,json,rest,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")

在我的测试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请求的部分:

@POST
    @Override
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public void create(XxxxxActivity entity) {
        super.create(entity);
       }
当我从测试页面(对于此版本的测试页面)请求时,我得到以下错误:

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

或此错误:

415号职位(无支持) 媒体类型)

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

另外,由于我有时设法从服务器获得响应,我想知道问题是否出在java代码中的xml解析上。我相信一个潜在的修复方法是添加jacksonjar文件,但我不知道如何在netbeans上添加它们,因为WEB\u-INF中没有lib文件夹

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

PS:还请注意,从浏览器获取请求可以正常工作。我没有在这个项目中使用maven

更换

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

对象JSON可用

编辑

  • 添加属性
    contentType:'application/json;字符集=UTF-8'
  • 从ajax调用中删除属性头

您是否将JSON库添加到web应用程序中(moxy、Jackson、genson等)?是的,web-INF/lib。然而,我从未设法让Jackson工作过(我没有使用Maven,所以我有一些版本控制问题)。我正在使用MOXY(jersey-media-MOXY-2.23.jar)。我还必须添加一些额外的罐子,但不记得是哪个。添加Jackson最简单的方法可能是使用Maven,但我无法帮助您。@toing_toing WEB-INF/lib是正确的文件夹,但错误415与库无关。415表示您正在传递数据的对象:{}和您在服务器端接收的对象XXXXXX活动实体不匹配。您应该以这样的方式编写数据,使其与实体对象的属性完全匹配。当我添加所有必需的库时,它消失了。
删除属性头
,这对我来说并不清楚me@toing_toing删除标题:{'Accept':'application/json','Content Type':'application/json'},明白了,谢谢。我们也需要报价吗?像
'contentType':'application/json;charset=UTF-8'
对我来说,它起到了作用,因为我保留了“Accept”标题,并将charset添加到了您提到的“Content-Type”标题中。只是“Content-Type”标题,它不断给出错误。contentType和dataType属性为我解决了这个问题。
'data': JSON.stringify({ "baseItemId": "2" }),