REST:GET回报UnsupportedMediaType(REST: GET returns U

2019-10-19 09:42发布

我试图GET通过REST从服务器的数据。 我的服务器端资源的方法是这样的:

@GET
@Path("{id}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public PersonRepresentation getPerson(@PathParam("id") @Nonnull final Long id) {

    // collect data
    // and return representation

    return personRepresentation;
}

类的定义如下:

@Path("person")
@Component
public class PersonResource {
}

现在,我试图做一个简单的GET在该资源:

http://localhost:8080/rest/person/1234567890
Accept: application/xml

这就是我的服务器响应:

HTTP Status 415 - Unsupported Media Type
type: Status report
message: Unsupported Media Type

description: The server refused this request because the request entity is in a format     
not supported by the requested resource for the requested method (Unsupported Media Type).

我为什么当我使用收到此错误GET -方法。 我想我已经设定的Accept-Header正确使用@Produces在我们推荐的方式。 围绕谷歌搜索后,我发现了一些“解决方案”是说:你必须设置内容类型的请求。 但是,是不是只有必要的,如果我有一个请求体? ( POST & PUT )。 任何想法,为什么我得到的Error-Code 415

编辑这是我的tomcat控制台说什么:

SEVERE: A message body reader for Java class java.lang.Long, and Java type class java.lang.Long, and MIME media type application/octet-stream was not found
Feb 25, 2014 3:00:24 PM com.sun.jersey.spi.container.ContainerRequest getEntity
SEVERE: The registered message body readers compatible with the MIME media type are:
application/octet-stream ->
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.RenderedImageProvider
*/* ->

Answer 1:

新泽西不但支持原生类型和String秒。 改变你的getPerson功能的追随者,它应该运行:

public PersonRepresentation getPerson(@PathParam("id") final long id) {

如果你真的想在一个对象来传递,另一个堆栈溢出问题可能有你要找的内容: 使用泽西传递对象到一个REST Web服务



文章来源: REST: GET returns UnsupportedMediaType