HTTP 415不支持的媒体类型

我创建了一个示例Web服务来进行调用。

我正在使用Jersey JAX-RS和Maven。

web.xml中

 provider-serlvet com.sun.jersey.spi.container.servlet.ServletContainer  javax.ws.rs.Application org.is.ws.provider.rest.ProviderAggregateApplication   com.sun.jersey.api.json.POJOMappingFeature true  1   provider-serlvet /*  

的pom.xml

   com.sun.jersey jersey-client 1.19   com.sun.jersey jersey-core 1.19   com.sun.jersey jersey-server 1.19   com.sun.jersey jersey-servlet 1.19   com.sun.jersey jersey-json 1.18   org.codehaus.jackson jackson-mapper-asl 1.9.13  

方法调用:

 @POST @Path(RESOURCE_PATH) @Produces("text/plain") public String getPCP(){ return "Hello"; } 

原始要求:

  POST http://localhost:9080/sep/pas/getPCP HTTP/1.1 Connection: close Accept-Encoding: gzip,deflate Content-Type: application/json Content-Length: 69 Host: localhost:9080 User-Agent: Apache-HttpClient/4.1.1 (java 1.5) { "patientID": "1234567890", "patientIDType": "XYZ" } 

我已经提到了以下文章

REST Webservice返回415 – 不支持的媒体类型

但我仍然有问题。

我删除了pom.xml中的所有依赖项代码,并添加了以下代码,其中包含jersey-core,jersey-bundle,jersey-json

   com.sun.jersey jersey-bundle 1.19   com.sun.jersey jersey-json 1.19   com.sun.jersey jersey-core 1.19  

我遇到了类似的问题,你可能忘记了Patient类的默认无参数构造函数。

详细地说,我在发送对象时遇到了相同的415 http错误,序列化为JSON,通过对我的JAX-rs服务的PUT / PUSH请求,换句话说,我的服务器无法从JSON反序列化对象。 在我的例子中,服务器能够在将它们发送到响应中时成功地序列化JSON中的相同对象。

正如其他响应中所提到的,我已经正确地将AcceptContent-Type标头设置为application/json ,但这还不够。

我只是忘了一个没有DTO对象参数的默认构造函数。 是的,这与@Entity对象背后的原因相同,您需要一个没有参数的构造函数,以便ORM实例化对象并在以后填充这些字段。

将没有参数的构造函数添加到我的DTO对象解决了我的问题。 这是一个类似于我的代码的示例:

错误

 @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class NumberDTO { public NumberDTO(Number number) { this.number = number; } private Number number; public Number getNumber() { return number; } public void setNumber(Number number) { this.number = number; } } 

 @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class NumberDTO { public NumberDTO() { } public NumberDTO(Number number) { this.number = number; } private Number number; public Number getNumber() { return number; } public void setNumber(Number number) { this.number = number; } } 

我失去了几个小时,我希望这会拯救你的;-)