如何在SpringMVC中将自定义内容类型添加为json?
我有一个客户机应用程序,它已注明日期,正在以如何在SpringMVC中将自定义内容类型添加为json?,spring,spring-mvc,spring-4,Spring,Spring Mvc,Spring 4,我有一个客户机应用程序,它已注明日期,正在以Content-Type:json而不是Content-Type:application/json的形式发送请求标题 无法(在不久的将来)更改客户端应用程序。 我正在使用Spring实现这些服务,我几乎让端点正常工作,但仅当内容类型为application/json时。如果将“json”设置为s内容类型,则会出现415个不支持的MediaType错误,这是有意义的 我如何解决这个问题,一个短期修复的黑客将是理想的 这是可行的,但需要客户端将头作为“ap
Content-Type:json
而不是Content-Type:application/json
的形式发送请求标题
无法(在不久的将来)更改客户端应用程序。
我正在使用Spring实现这些服务,我几乎让端点正常工作,但仅当内容类型为application/json
时。如果将“json”设置为s内容类型,则会出现415个不支持的MediaType错误,这是有意义的
我如何解决这个问题,一个短期修复的黑客将是理想的
这是可行的,但需要客户端将头作为“application/json”发送
@RequestMapping(value=“person”,method=RequestMethod.POST,consumes=“application/json”)
@应答器
公共列表getProfiles(@RequestBody包装器){
这在容器启动期间失败
@RequestMapping(value="person", method = RequestMethod.POST, consumes="json")
@ResponseBody
public List<PersonProfile> getProfiles (@RequestBody Wrapper wrapper) {
@RequestMapping(value=“person”,method=RequestMethod.POST,consumes=“json”)
@应答器
公共列表getProfiles(@RequestBody包装器){
415不支持的媒体类型错误
我不知道你的ajax代码
但是,您在jquery文档中读到了。也许可以解决这个问题
contentType
contentType(默认值:“application/x-www-form-urlencoded;charset=UTF-8”)
类型:布尔或字符串
将数据发送到服务器时,请使用此内容类型。默认值为“application/x-www-form-urlencoded;charset=UTF-8”,这在大多数情况下都适用。如果将内容类型显式传递到$.ajax(),则始终将其发送到服务器(即使未发送数据)。从jQuery 1.6开始,您可以传递false来告诉jQuery不要设置任何内容类型头。注意:W3C XMLHttpRequest规范规定字符集始终为UTF-8;指定另一个字符集不会强制浏览器更改编码。注意:对于跨域请求,将内容类型设置为application/x-w以外的任何内容ww form URL编码、多部分/表单数据或文本/普通将触发浏览器向服务器发送飞行前选项请求
数据类型
数据类型(默认值:智能猜测(xml、json、脚本或html))
类型:字符串
您期望从服务器返回的数据类型。如果未指定任何数据类型,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将生成XML,在1.4中JSON将生成JavaScript对象,在1.4中脚本将执行脚本,其他任何内容将作为字符串返回)。可用类型(以及作为成功回调的第一个参数传递的结果)是:
“xml”:返回可通过jQuery处理的xml文档。
“html”:以纯文本形式返回html;当插入DOM时,将计算包含的脚本标记。
“脚本”:将响应评估为JavaScript并以纯文本形式返回。除非缓存选项设置为true,否则通过向URL追加查询字符串参数=[TIMESTAMP]来禁用缓存。注意:这会将POST转换为远程域请求的GET。
“json”:将响应评估为json并返回JavaScript对象。跨域“json”请求将转换为“jsonp”除非请求的请求选项中包含jsonp:false。JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝并抛出解析错误。从jQuery 1.9开始,空响应也会被拒绝;服务器应该返回null或{}响应(有关正确JSON格式的更多信息,请参阅JSON.org)
“jsonp”:使用jsonp加载JSON块。在URL末尾添加一个额外的“?callback=?”以指定回调。除非缓存选项设置为true,否则通过向URL附加查询字符串参数“=[TIMESTAMP]”来禁用缓存。
“文本”:纯文本字符串。
多个空格分隔的值:从jQuery 1.5开始,jQuery可以将一个数据类型从其在内容类型头中接收的内容转换为您需要的内容。例如,如果您希望将文本响应视为XML,请使用“文本XML”作为数据类型。您还可以发出JSONP请求,将其作为文本接收,并由jQuery解释为XML:“jsonp文本xml”。类似地,像“jsonp xml”这样的速记字符串将首先尝试从jsonp转换为xml,如果失败,将从jsonp转换为文本,然后从文本转换为xml
您需要按消费和生产进行搜索
你错误地使用了消费品
@RequestMapping(value="person", method = RequestMethod.POST, consumes="json")
@ResponseBody
public List<PersonProfile> getProfiles (@RequestBody Wrapper wrapper) {