java - POST 到 Jersey REST 服务时出现错误 415 不支持的媒体类型

标签 java json rest jersey jersey-2.0

我正在使用带有 Jersey 和 Tomcat 的 JAX-RS Web 应用程序。获取请求很好,但是当我尝试发布 JSON 时,我收到 HTTP 状态 415 - 不支持的媒体类型。

这是我的简单 HelloWorld.java:

package service;

import javax.ws.rs.*;

@Path("hello")
public class HelloWorld {
    @GET
    @Produces("text/plain")
    public String get() {
        return "hello world";
    }

    @POST
    @Consumes("application/json")
    public String post(JS input) {
        return input.hello;
    }

    public static class JS {
        public String hello;
    }
}

这是我在 Postman 中尝试的请求(带有“application/json” header ):

enter image description here 这是带有库的项目布局: enter image description here

我正在使用:

  • Java 7 x64
  • Jersey 2.17
  • Tomcat 7.0.62 x64

谢谢!

最佳答案

Jersey 发行版不提供开箱即用的 JSON/POJO 支持。您需要添加依赖项/jar。

添加所有这些

使用 Maven,下面将拉取以上所有内容

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.17</version>
</dependency>

对于任何 future 不使用 Jersey 2.17(并直接使用 jar 而不是 Maven)的读者,您可以转到 here查找您正在使用的 Jersey 版本,并查看您需要哪些传递依赖版本。此 Jersey 依赖项的当前版本使用 Jackson 2.3.2。这是您需要注意的主要事情。

关于java - POST 到 Jersey REST 服务时出现错误 415 不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939023/

相关文章:

javascript - 下载 json 文件而不是 console.log-在 $.getJson() 中对其进行记录

php - 如何从 HTTP GET 请求中获取 JSON 字符串

java - XML 到 JSON 的转换 : empty array instead of empty string

rest - 使 Jersey RESTful 服务器与 Ember Data 和 JSON API 兼容

机器人 RestClientException : no suitable HttpMessageConverter found

api - 使用 Spring Boot 和 OAuth2 获取此资源的范围不足

java - 使用 BufferedReader 时第一个字符被截断

java - JNDI - Glassfish JDBC,引用数据源时出错

java - 通过标准 SDK 在 Android 8 上显示应用程序图标徽章

java - QuickSort:更改枢轴元素会导致 StackOverflow