所以我写了一个示例 REST 资源,它在 Jersey/Tomcat 中的作用就像一个魅力,但是当我把它带到 RestEASY/Tomcat 时,它就崩溃了。我是说真的?开箱即用的工作发生了什么。总之有点沮丧。尝试访问资源( http://localhost:7070/mg/mytest )时出现此错误

“内容类型为空,并希望提取正文”

7842 [http-7070-2] 错误 com.loyalty.mg.rest.exception.MGExceptionMapper - 异常映射器中捕获的错误 -
org.jboss.resteasy.spi.BadRequestException: 内容类型为 null 并期望提取正文
在 org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:131)
在 org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:98)
在 org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:121)
在 org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:247)
在 org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:212)
在 org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:202)

@Path("/mytest")
public class TestResource  {

    @GET
    public Response getData()

我想问题也是 - RestEASY 是否比 Jersey 好,这只是开始,我遇到了错误。我应该坚持 Jersey 吗?

也已经尝试过这个:)
<context-param>
  <param-name>resteasy.media.type.mappings</param-name>
  <param-value>json : application/json, xml : application/xml</param-value>
</context-param>

最佳答案

抛出该异常的代码如下所示:

     final MediaType mediaType = request.getHttpHeaders().getMediaType();
     if (mediaType == null) {
        throw new BadRequestException(
             "content-type was null and expecting to extract a body");
     }

问题似乎是 RestEASY 无法从它收到的请求的 header 中找出内容类型。这表明请求中的内容类型是伪造的,或者您配置 RestEASY 的方式存在问题。



我无法回答。但是,我认为您太快将可能是您的代码错误的事情归咎于 RestEASY。

关于java - 从 Jersey 迁移到 RESTEasy 时为空内容类型。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3089904/

10-12 07:13