gpt4 book ai didi

json - 无法将 JSON 发布到 Jersey

转载 作者:行者123 更新时间:2023-11-28 23:23:25 26 4
gpt4 key购买 nike

我无法让 Jersey 服务使用 JSON。我不断收到 415 不受支持的媒体类型错误。这是我的服务类和方法。 GET 请求与使用纯文本的 POST 一样工作,但使用使用 JSON 的第三种方法的 URI 进行测试会生成错误。 Jersey 中的文档说要取消对 media-moxy 依赖项的注释以添加我已经完成的 JSON 功能,但这不会影响行为。我在 Tomcat 中使用下面的 web.xml 运行它

package com.example;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

@Path("/myresource")
public class MyResource {

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
String path = "Got it";
return "Got it!";
}


@POST
@Path("/testpost/{x}")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public String testPost (@PathParam("x") String sessId) {
return "{a: \"333\"}" ;
}

@POST
@Path("/testjson")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String testjsonpost ()
{
return "{json-received: \"333\"}" ;
}

}

我的 Maven 依赖项是:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>

</dependencies>
<properties>
<jersey.version>2.23.2</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Web.xml

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>

最佳答案

添加这个依赖

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

它对我有用。

关于json - 无法将 JSON 发布到 Jersey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com