使用Spring Boot,Controller请求返回的参数类型是ResponseBody , 若是请求的时候使用使用配置的默认请求扩展名,例如.html,Spring MVC会抛出一个type=Not Acceptable, status=406错误,以下:html
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代码以下:java
/** * 延时获取用户端浏览器的跟踪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; }
处理办法:json
一、使用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,访问正常。app
二、覆盖Application.java里的 configureContentNegotiation 方法,代码以下:ide
@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);this
favorPathExtension表示支持后缀匹配,
ignoreAcceptHeader默认为fasle,表示accept-header匹配,defaultContentType开启默认匹配。spa