当前位置: 首页 > 面试题库 >

Spring JSON请求获取406(不可接受)

年业
2023-03-14
问题内容

这是我的javascript:

    function getWeather() {
        $.getJSON('getTemperature/' + $('.data option:selected').val(), null, function(data) {
            alert('Success');                               
        });
    }

这是我的控制器:

@RequestMapping(value="/getTemperature/{id}", headers="Accept=*/*", method = RequestMethod.GET)
@ResponseBody
public Weather getTemparature(@PathVariable("id") Integer id){
    Weather weather = weatherService.getCurrentWeather(id);
        return weather;
}

spring-servlet.xml

<context:annotation-config />
<tx:annotation-driven />

收到此错误:

GET http://localhost:8080/web/getTemperature/2 406 (Not Acceptable)

标头:

响应标题

Server  Apache-Coyote/1.1
Content-Type    text/html;charset=utf-8
Content-Length  1070
Date    Sun, 18 Sep 2011 17:00:35 GMT

请求标题

Host    localhost:8080
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept  application/json, text/javascript, */*; q=0.01
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection  keep-alive
X-Requested-With    XMLHttpRequest
Referer http://localhost:8080/web/weather
Cookie  JSESSIONID=7D27FAC18050ED84B58DAFB0A51CB7E4

有趣的注意事项:

我收到406错误,但休眠查询同时起作用。 每当我在保管箱中更改选择时,这就是tomcat日志所说的:

 select weather0_.ID as ID0_0_, weather0_.CITY_ID as CITY2_0_0_, weather0_.DATE as DATE0_0_, weather0_.TEMP as TEMP0_0_ from WEATHER weather0_ where weather0_.ID=?

可能是什么问题?之前在SO中有两个类似的问题,我在那里尝试了所有被接受的提示,但是我猜它们没有起作用…

有什么建议?随意问的问题…


问题答案:

406不可接受

由请求标识的资源仅能够生成响应实体,该响应实体具有根据请求中发送的接受标头不可接受的内容特征。

因此,您的请求接受标头为application /
json,而您的控制器无法返回该标头。当找不到正确的HTTPMessageConverter来满足@ResponseBody带注释的返回值时,就会发生这种情况。<mvc:annotation- driven>给定类路径中的某些3-d方库,当您使用时,HTTPMessageConverter会自动注册。

您的类路径中没有正确的Jackson库,或者您没有使用 <mvc:annotation-driven>指令。

我成功地复制了您的方案,并且使用这两个库并且没有headers="Accept=*/*"指令,它可以正常工作。

  • 杰克逊核心-asl-1.7.4.jar
  • 杰克逊-映射器-asl-1.7.4.jar


 类似资料:
  • 问题内容: 这是我的javascript: 这是我的控制器: spring-servlet.xml 出现此错误: 标头: 响应标题 请求标题 有趣的注意事项: 我收到406错误,但hibernate查询同时起作用。 每当我在保管箱中更改选择时,这就是tomcat日志所说的: 可能是什么问题?之前在SO中有两个类似的问题,我在那里尝试了所有被接受的提示,但是我想它们没有用… 有什么建议么?随意问的问

  • 我有一个带有请求映射和路径变量的Spring restController: 调用此控制器时,我收到Http 406 Not Acceptable错误,请求如下: 但不包括: 那不是很奇怪吗?直到最近我才发现也失败了,所以我猜这与扩展映射有关。 我如何处理此隐藏功能? 问候

  • 在我的pom中有以下详细信息。xml 应用程序配置。xml: JSP页面: 控制器: 我正在调用我的url作为: 点击按钮后,返回的url,返回406和描述是: 此请求标识的资源只能根据请求“接受”标头生成具有不可接受特征的响应 我跟踪了这个链接,但没有结果。

  • 问题内容: 在我的pom.xml中有以下详细信息 JSP页面: 控制器: 我正在以以下方式调用我的网址: 单击按钮后,它返回url,因为 http://lt-50k7sy1:8080/QuickBooks-UX/syncAccounts它返回406,描述为: 该请求标识的资源只能根据请求“接受”标头生成特性不可接受的响应 问题答案: 将以下jar添加到Spring 4.1。*所需的pom.xml文

  • 问题内容: 我正在尝试生成一个简单的JSON响应。现在,我收到406 Not Acceptable错误。Tomcat说:“此请求标识的资源只能根据请求“接受”标头生成特性不可接受的响应。” 即使我的标题是 在tomcat / lib中,我拥有所有的Tomcat jar,Spring jar和jackson-all-1.9.0.jar。我在Tomcat 7中使用Spring 3.2.2。 我知道这个

  • 我正在尝试生成一个简单的JSON响应工作。现在我收到406不接受错误。Tomcat说“此请求标识的资源仅能够根据请求“接受”标头生成具有不可接受特征的响应。”即使我的标头是 在tomcat/lib中,我有所有的tomcat罐子、Spring罐子和jackson-all-1.9.0。罐子我将Spring 3.2.2用于Tomcat 7。 我知道这个问题已经讨论过很多次了,但是没有一个解决方案对我有用