java 415错_关于spring:使用AJAX将json数据发送回java rest服务时出现415错误

我在前端有一个Ajax请求,该请求将JSON文档发送到rest服务实现。 它通过Spring进行了连接,REST服务中的@GET请求运行良好。

问题是,每当我尝试使用@POST方法时,它总是会引发415错误。

我已经尝试根据各种在线指南来操纵我如何将其发送回去,以及post方法中接受的变量类型,但是我不确定下一步要去哪里。

我仔细检查了我是否确实将数据发送到@POST方法,但是我感觉它根本没有解析JSON并抛出错误。

不幸的是,如果这是问题,我看不到如何解决。

在下面,我将所有内容都简化为一个仍然会产生415错误的简单形式。

AJAX请求:

function post_request(json_data) {

$j.ajax({

url : '../api/createDisplayGroup/postHtmlVar/' + containerID + '/' + containerType,

data: JSON.stringify(json_data),

dataType: 'json',

type : 'post'

}).done(function(response) {

run_update(response);

}).error(function(jQXHR, textStatus, errorThrown) {

alert('error getting request');

});

};

春季XML:

REST实现(仅@POST):

@POST

@Path("/postHtmlVar/{containerId}/{contentType}")

@Consumes(MediaType.APPLICATION_JSON)

public List postHtml(@PathParam("containerId") String containerId, @PathParam("contentType") String contentType, List displayGroups) {

Long contId = Long.parseLong(containerId);

Long contType = Long.parseLong(contentType);

//return convertToResponse(peopleFilterService.getDisplayGroups(contId, contType));*/

return testDisplayGroup();

}

POST JSON的可能重复失败,并显示415不支持的媒体类型,Spring 3 mvc

您收到的错误如下:

415 Unsupported Media Type

The request entity has a media type which the server or resource does not support. For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.

(wikipedia)

原因可能是$j.ajax调用,请尝试添加contentType参数,例如:

...

$j.ajax({

url : '../api/createDisplayGroup/postHtmlVar/' + containerID + '/' + containerType,

data: JSON.stringify(json_data),

dataType: 'json',

type : 'post',

contentType: 'application/json'

...

然后,它将与您的postHtml方法使用的@Consumes批注的值匹配,请注意:

The @Consumes annotation is used to specify which MIME media types of representations a resource can accept, or consume, from the client. (Oracle)

默认情况下,ajax调用的媒体类型将为application/x-www-form-urlencoded,因此您的处理程序方法将不匹配,从而导致415错误。

另外:在ajax调用中,contentType指定要发送到服务器的数据类型,而dataType指定要返回的数据类型。

因此,而不是在ajax调用中使用" contentType:application / json"代替" type:json"?

除了dataType之外,您还需要添加contentType,检查更新后的答案。

这似乎至少在做一些不同的事情...现在出现500错误...即时通讯猜测即时通讯将在方法定义中需要不同的类型...如果即时通讯发送的是JSON对象数组,我可以 只是使用List ?

恐怕我不知道该怎么做-也许值得提出一个新的问题,但是,这个答案可能会有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值