0
JSONを使用するジャージーサービスを取得できません。 415のサポートされていないメディアタイプのエラーが引き続き発生します。ここに私のサービスクラスとメソッドがあります。 GETリクエストはプレーンテキストのPOSTと同じように機能しますが、JSONで3番目のメソッドを使用するURIでテストするとエラーが発生します。 Jerseyのドキュメントでは、私がやったJSON機能を追加するためにmedia-moxy依存関係のコメントを外していると言われていますが、動作には影響しません。私は私のMavenの依存関係があるJSONをジャージに投稿できません
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\"}" ;
}
}
以下のweb.xmlでTomcatの内部でこれを実行している:
<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>