具有字符串正文的 Jersey POST API 在服务器上不起作用(但在本地工作)

Jersey POST API that has a string body doesn't work on a server (but works locally)

我创建了一件球衣 POST API,正文为 text/plain。我已经在本地尝试了这个 API 并且它按预期工作,但是在将它部署到服务器之后,我得到 415 Unsupported Media Type。

这是代码:

@POST
@Path("/dodo")
@Consumes({MediaType.TEXT_PLAIN})
@Produces({MediaType.APPLICATION_JSON})
public Response Dodo(String input){
    return Response.status(200).entity(new JerseyDto(input,12)).build();
}

这是我在日志中看到的错误:

com.sun.jersey.spi.container.ContainerRequest getEntity
SEVERE: A message body reader for Java class java.lang.String, and Java type class java.lang.String, and MIME media type text/plain was not found.
The registered message body readers compatible with the MIME media type are:
*/* ->
  com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider

有什么想法吗?

嗯,我发现问题出在哪里了。我们正在使用 shade 插件来创建一个 "fat" jar(包括所有依赖项),并且在使用此插件时 Jersey 出现问题。这就是为什么在本地 运行 时没问题的原因。您可以阅读有关此问题和解决方案的更多信息 .