我正在使用Spring 3.2,并尝试使用ajax post请求提交一个json对象数组,如果这是相关的,我转义了所有特殊字符。
我收到的HTTP状态为415。
我的控制器是:
@RequestMapping(value = "/save-profile", method = RequestMethod.POST,consumes="application/json")
public @ResponseBody String saveProfileJson(@RequestBody String[] profileCheckedValues){
System.out.println(profileCheckedValues.length);
return "success";
}
jquery是:
jQuery("#save").click(function () {
var profileCheckedValues = [];
jQuery.each(jQuery(".jsonCheck:checked"), function () {
profileCheckedValues.push($(this).val());
});
if (profileCheckedValues.length != 0) {
jQuery("body").addClass("loading");
jQuery.ajax({
type: "POST",
contentType: "application/json",
url: contextPath + "/sample/save-profile",
data: "profileCheckedValues="+escape(profileCheckedValues),
dataType: 'json',
timeout: 600000,
success: function (data) {
jQuery('body').removeClass("loading");
},
error: function (e) {
console.log("ERROR: ", e);
jQuery('body').removeClass("loading");
}
});
}
});
下面的json是我正在发布的数组中的一个对象的示例:
{
"id": "534213341",
"name": "Jack Lindamood",
"first_name": "Jack",
"last_name": "Lindamood",
"link": "https://www.facebook.com/jack",
"username": "jack",
"gender": "male",
"locale": "en_US",
"updated_time": "2013-07-23T21:13:23+0000"
}
错误为:
The server refused this request because the request entity is in a format not supported by the requested resource for the requested method
为什么会发生这个错误-有人知道吗?
8条答案
按热度按时间lkaoscv71#
你可以用
HttpServletRequest
试试,它没有任何问题r3i60tvu2#
1)添加以下依赖项
2)如果在控制器方法中使用@RequestBody注解,请确保已在xml文件中添加以下内容
这应该可以解决415状态代码问题。
bgtovc5b3#
您需要将Jackson和jackson-databind添加到类路径中,Spring将使用它的
MappingJacksonHttpMessageConverter
来获取它MapJacksonHttpMessage转换器
可以使用Jackson的ObjectMapper读写JSON的HttpMessageConverter实现。可以通过使用Jackson提供的注解根据需要自定义JSONMap。需要进一步控制时,可以通过ObjectMapper属性注入自定义ObjectMapper,以满足需要为特定类型提供自定义JSON序列化程序/反序列化程序的情况。默认情况下,此转换器支持(application/json)。
7vhp5slm4#
我的请求Map配置中有
consume="application/json"
,它需要一个JSON输入。当我发送一个不是JSON输入的请求时,Spring抱怨415不支持的媒体类型。所以删除consume="application/json"
对我很有效。所以请检查请求输入和Spring控制器方法签名中的接受媒体类型。不匹配会引发415错误。这很可能是问题的原因。x9ybnkn65#
尝试将
json
的数据类型改为application/json
。那么你的json看起来是什么样的?是valid吗?我以前从未见过json转换成String[],所以这也可能是问题所在。b5lpy0ml6#
我遇到了同样的问题。我必须按照以下步骤来解决这个问题:
1.确保您具有以下依赖项:
2.创建以下筛选器:
3.对web.xml中的请求应用上述筛选器
我希望这对某人有用。
mbskvtky7#
我遇到了同样的问题,我只是调出了spring-servlet.xml中的下面一行代码,它几乎位于这个xml文件的末尾。
myss37ts8#
我遇到了同样的问题,一切看起来都很好。其他请求在同一个项目中工作得很好。最后发现我的请求对象有一个重复的:
条目。错误消息:
415不支持的媒体类型
在这种情况下真的很混乱。希望这对像我这样眼睛不好的人有帮助; -)