所以我写了一个示例 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/