【发布时间】:2015-08-29 18:43:40
【问题描述】:
我创建了一个示例 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"
}
我参考了下面的文章
REST Webservice returning 415 - Unsupported Media Type
但我仍然有问题。
【问题讨论】:
-
如果接收请求的容器无法将请求映射到相应的方法,通常会抛出异常。因此,您是否在班级级别定义了
@Path?RESOURCE_PATH是什么?是/sep/pas/getPCP吗?此外,您通过@Consumes声明了一个 JSON 媒体类型,但没有提供任何可以接收此发送的 JSON 正文的参数(对象、字符串、POJO、...) -
@RomanVottner
resource_path工作正常。我认为这没有任何问题,因为我使用相同的resource_path代替@Get并且它有效。使用@Consumes,我在方法之前将其删除,并在我的方法中返回一个字符串。我仍然得到 415 -
如果您出于测试目的将
@Consumes声明更改为plain/text,是否还会收到415?如果没有,那么来自 JSON 的自动编组可能会失败。 -
我编辑了我的方法调用,没有
@consumes。我正在做一个简单的 post call 并期待一个字符串作为输出。 -
您是否尝试为
getPCP指定String参数?另外,尝试将请求的内容类型更改为plain/text
标签: java web-services maven jax-rs