java jersey中415不支持的媒体类型

我有下面的代码说415不支持MEDIA类型和服务器拒绝此请求的问题,因为请求实体的格式不支持 post方法。

随处搜索并做了所有事情但没有结果。

帮帮我!!

以下是主要代码

ActivityResource.java

@Path("activityresource") public class ActivityResource { private ActivityRepo activityRepo=new ActivityRepositoryStub(); @POST @Path("postActivity") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) public Activity createActivityParams(MultivaluedHashMap formse){ System.out.println(formse.getFirst("discription")); System.out.println(formse.getFirst("duration")); Activity activity=new Activity(); activity.setDiscription(formse.getFirst("discription")); activity.setDuration(Integer.parseInt(formse.getFirst("duration"))); activityRepo.create(activity); return activity; } } 

Activity.java

 package com.ws.model; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Activity { private String id; private String discription; private int duration; private User user; public String getId() { return id; } public void setId(String id) { this.id = id; } @XmlElement(name="desc") public String getDiscription() { return discription; } public void setDiscription(String discription) { this.discription = discription; } public int getDuration() { return duration; } public void setDuration(int duration) { this.duration = duration; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } 

User.java

 package com.ws.model; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 

的pom.xml

  4.0.0 com.ws.app RestService 0.0.1-SNAPSHOT war  RestServices   org.apache.maven.plugins maven-compiler-plugin 3.2 true  1.8 1.8      2.17     org.glassfish.jersey jersey-bom ${jersey.version} pom import      org.glassfish.jersey.media jersey-media-json-jackson    org.glassfish.jersey.containers jersey-container-servlet   org.glassfish.jersey.core jersey-server    

WEB.XML

   RestService  Jersey Web Application org.glassfish.jersey.servlet.ServletContainer  jersey.config.server.provider.packages com.ws.app  1   Jersey Web Application /webapi/*   

问题是您的方法参数类型MultivaluedHashMap

 public Activity createActivityParams(MultivaluedHashMap formse){ 

处理application/x-www-form-urlencodedMultivaluedMap的提供application/x-www-form-urlencoded仅支持MultivaluedMapMultivaluedMap注入。 你可以在源代码中看到

 @Override public boolean isReadable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { // Only allow types MultivaluedMap and MultivaluedMap. return type == MultivaluedMap.class && (type == genericType || mapType.equals(genericType)); } 

所以只需将方法参数更改为MultivaluedMap