【问题标题】:NetworkError: 415 Unsupported Media Type - Tomcat on linux serverNetworkError: 415 Unsupported Media Type - Linux 服务器上的 Tomcat
【发布时间】:2016-08-05 18:33:09
【问题描述】:

我正在向 POST url 发送一些 json 数据。此代码在本地环境(tomcat + windows)中运行良好,但不适用于生产环境(Tomcat + linux)。 已经提到了各种链接,但没有一个能帮到我。

问题操作系统与生产环境,我也很早就从服务器上删除了一些文件,我怀疑 tomcat 可能已经损坏,但其余所有 url 工作正常。这是我正在做的新开发。

如果我通过 firefox rest 客户端点击也会有相同的行为。

错误

服务器拒绝此请求,因为请求实体的格式不受所请求方法的请求资源支持

jQuery 代码

$.ajax({
        type : "POST",
        url : "/add",
        data : JSON.stringify(data),
        dataType: 'json',
        headers: { 
            'Accept': 'application/json',
            'Content-Type': 'application/json' 
            },
        success : function(resp) {
            console.log(resp);          
        }
    });

弹簧控制器

@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody String addDishDetails(
            @RequestBody MyPojo pojo) {
        return "success";
    }

pom.xml

也在罐子下面添加

<dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.3</version>
        </dependency>

【问题讨论】:

  • 你为什么使用不同的主要版本的杰克逊?这些根本不兼容。
  • @SotiriosDelimanolis 但这是我在看到一些答案后添加的一种解决方法,在添加它之前,在本地它工作正常,但不是在产品中。
  • 不,这没有意义。不要乱搞东西。仅使用 Jackson 2。然后在 Spring 上启用 DEBUG 日志记录并检查它吐出的内容。
  • @SotiriosDelimanolis 你的意思是说“jackson-mapper-asl1.9.13”和“jackson-databind2.0.0"
  • 不,您应该拥有三个最新版本的these。完全摆脱org.codehaus 版本。

标签: java spring-mvc tomcat7 http-status-code-415


【解决方案1】:

从错误中它说客户端没有以服务器期望的类型发送请求,客户端发送 json 并且我们已经定义了 cosumes=MediaType.APPLICATION_JSON_VALUE 如果我们将其替换为 仅限 MediaType.APPLICATION_JSON,并且您还指定了接受参数,因此要么将其删除,要么将生产属性添加到控制器中的 application/json

【讨论】:

  • consumes 需要 String 值。 MediaType.APPLICATION_JSON 引用了 enum
【解决方案2】:

上面的 cmets 和答案值得一读,可能是少数情况的解决方案。

就我而言,我有一个属性Map&lt;String,String&gt;,我需要忽略它。

所以我补充说,

@JsonIgnore
Map<String,String>

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多