2016-10-12 12 views
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> 

答えて

0

は、この依存関係を追加

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

それは私のために働いた。

関連する問題