我正在使用带有 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 ):
这是带有库的项目布局:
我正在使用:
- Java 7 x64
- Jersey 2.17
- Tomcat 7.0.62 x64
谢谢!
最佳答案
Jersey 发行版不提供开箱即用的 JSON/POJO 支持。您需要添加依赖项/jar。
添加所有这些
- jersey-media-json-jackson-2.17
- jackson-jaxrs-json-provider-2.3.2
- jackson-core-2.3.2
- jackson-databind-2.3.2
- jackson-annotations-2.3.2
- jackson-jaxrs-base-2.3.2
- jackson-module-jaxb-annotations-2.3.2
- jersey-entity-filtering-2.17
使用 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/