Spring Boot 406(type=Not Acceptable, status=406)异常解决办法

使用Spring Boot,Controller请求返回的参数类型是ResponseBody , 如果请求的时候使用使用配置的默认请求扩展名,例如.html,Spring MVC会抛出一个type=Not Acceptable, status=406错误,如下:

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Mon Jan 23 17:14:35 CST 2017 There was an unexpected error (type=Not Acceptable, status=406). Could not find acceptable representation

请求处理的Controller代码如下:

/** * 延时获取用户端浏览器的跟踪ID * @param request * @param response * @param orgi * @param appid * @param userid * @param sign * @return */ @RequestMapping("/online") @Menu(type = "im" , subtype = "online" , access = true) public @ResponseBody OnlineUser online(HttpServletRequest request , HttpServletResponse response , @Valid String orgi , @Valid String appid, @Valid String userid , @Valid String sign){ OnlineUser onlineUser = null ; if(!StringUtils.isBlank(sign)){ onlineUser = OnlineUserUtils.online(super.getIMUser(request , sign) , orgi ,sign , UKDataContext.OnlineUserTypeStatus.WEBIM.toString(), request); } return onlineUser; }

处理办法:

1、使用JSON请求Controller,增加 org.codehaus.jackson  的依赖

<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>

请求的URL使用http://xxx.xxx.xxx.xxx:8080/online.json,访问正常。

2、覆盖Application.java里的 configureContentNegotiation  方法,代码如下:

@SpringBootApplication public class Application extends WebMvcConfigurerAdapter { @Override public void configureContentNegotiation(ContentNegotiationConfigurer config) { config.favorPathExtension(false); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

方法2中关键的代码在于 config.favorPathExtension(false);

favorPathExtension表示支持后缀匹配,
ignoreAcceptHeader默认为fasle,表示accept-header匹配,defaultContentType开启默认匹配。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang