1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 415错_关于spring:使用AJAX将json数据发送回java rest服务时出现415错误

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

时间:2021-06-02 23:06:33

相关推荐

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 ?

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。