json - RESTful json 响应在 tomcat 上失败但在 GlassFish 中有效

标签 json spring jakarta-ee tomcat spring-mvc

这是我使用 JSON 响应进行响应的方法。此代码适用于 GlassFish,但在 tomcat 7.0.27 上运行时出现错误

HTTP 状态:406

此请求标识的资源只能生成具有根据请求“接受” header () Not Acceptable 特征的响应。

@RequestMapping(value = "/test", headers="Accept=application/json", method = RequestMethod.POST)
public @ResponseBody
Map<String, ? extends Object> getAuthPOST(@RequestBody String jsonBody) throws JSONException {                        
    JSONObject j = new JSONObject(jsonBody);
    System.out.println(j.keys());
    Iterator i = j.keys();
    Map<String, Object> result = new HashMap<String, Object>();
    while (i.hasNext()) {            
        String key = (String) i.next();
        result.put(String.valueOf(key), String.valueOf(j.getString(key)));
    }        
    return result;

}

更新:

这是我收到请求时的标题

HTTP/1.1 406 Not Acceptable 内容长度:1070 服务器:Apache-Coyote/1.1 内容类型:text/html;charset=utf-8 日期:2012 年 5 月 2 日星期三 15:47:24 GMT 连接:关闭

它将 Content-Type 更改为 text/html。

这是我的请求 header :

POST/SpringMVC/登录/测试 HTTP/1.1 接受:应用程序/json 内容类型:application/json

最佳答案

您没有提到您使用的是哪个版本的 spring-mvc,但是如果您使用的是 3.1,则可以将“produces”参数添加到您的@RequestMapping。 produces="application/json"

关于json - RESTful json 响应在 tomcat 上失败但在 GlassFish 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10417292/

相关文章:

java - 在 Spring Boot 应用程序中验证 json

hibernate - 如何在Hibernate中加入两个不同的条件?

java - 根据配置文件中的值注入(inject)依赖项

ruby-on-rails - 在 Ubuntu 上使用 ruby​​ 2.4.0 安装 json 1.8.3 时出错

json - 在 R 中将 markdown 转换为 json

支持 DOM 样式访问的 Java JSON 库

spring - 我可以将 SpringWebflux 与 hibernate 一起使用吗?

java - 停止 <任务 :scheduler> tasks

java - JpaRepository 中的动态实体名称?

eclipse - 从 Eclipse 中的搜索结果中排除目标文件夹