Http状态码406(Not Acceptable) 错误问题解决方法

状态码406:HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。说白了就是后台的返回结果前台无法解析就报406错误。

示例代码中请求代码,后台代码均正常,且有返回信息。如下图:

$.ajax({
            url:'http://localhost:8080/findDsrwByDsrwid',
            type : 'post',
            data :{
                id : cztj
            },
            dataType:'json',
        }).success(function(result){
          }

Http状态码406(Not Acceptable) 错误问题解决方法_第1张图片

那我们来看看网页状态:

Http状态码406(Not Acceptable) 错误问题解决方法_第2张图片

状态码:406,请求头(Request Headers)中看到请求信息是json格式,响应头(Response Hraders)中却发现返回信息的格式是“text/html”,前台无法解析,需将结果转换成json格式返回给前台。

解决方案:

jackson开源工具(springMVC天然支持)

导入jackson-core和jackson-mapper-asl的依赖包,如果你是maven工程,在pom加入

 
    
      com.fasterxml.jackson.core
      jackson-core
      2.1.4
    

      
      
          org.codehaus.jackson
          jackson-mapper-asl
          1.9.12
      

此时还需要关注springMVC的一个配置,具体原因请看原理解析。

原理解析:

为什么只要导入jar就好了呢?是因为spring mvc 配置了 后 ,如果classpath 里面包含jackson 包,则自动注册MappingJackson2HttpMessageConverter,从而支持json 输出。

这是springMVC中的一句配置


且annotation-driver是被AnnotationDrivenBeanDefinitionParser解析,这里提供另外一篇博文,希望有所帮助。

https://blog.csdn.net/taotoxht/article/details/54136890?locationNum=4&fps=1

结果展示:

Http状态码406(Not Acceptable) 错误问题解决方法_第3张图片

————————————————————————————————————————————————————

2020.01.30:,今天搭了另外一个项目的环境,项目依赖中已有jackson-annotations-*.jar,jackson-core-.jar,jackson-databind-.jar 包,打开注解驱动依然报406,如果有同学试了以上方案不行的话,可以试着尝试fastjson替代jackson,具体是:

引入jar包:

        
        
            com.alibaba
            fastjson
            1.2.58
        

注解驱动配置为:

	
		
			
			
				
					
						application/json
						text/html;charset=UTF-8
					
				

			
		
	

结果: 

Http状态码406(Not Acceptable) 错误问题解决方法_第4张图片

 

你可能感兴趣的:(网络,java基础,状态码,406,jackson)