[英]HTTP 415 Unsupported Media Type
我創建了一個樣本Web服務來進行郵寄。
我正在使用Jersey JAX-RS和Maven。
web.xml中
<servlet>
<servlet-name>provider-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.is.ws.provider.rest.ProviderAggregateApplication</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>provider-serlvet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
的pom.xml
<!-- Jersey jars -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
方法調用:
@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"
}
我已經提到了以下文章
但是我仍然有問題。
我刪除了pom.xml中的所有依賴項代碼,並添加了以下代碼,其中包含jersey-core,jersey-bundle,jersey-json
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
我有一個類似的問題,可能是您忘記了Patient類的默認無參數構造函數。
詳細地說,當通過對我的JAX-rs服務通過PUT / PUSH請求發送序列化為JSON的對象時,我遇到了相同的415
http錯誤,換句話說,我的服務器無法從JSON解序列化對象。 就我而言,服務器將JSON對象中的相同對象發送到響應中時,能夠成功對其進行序列化。
如其他響應中所述,我已將Accept
和Content-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;
}
}
我浪費了幾個小時,希望這可以節省您的時間;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.