【问题标题】:Jersey REST (GET) throwing MessageBodyWriter not found for media type=application/xmlJersey REST (GET) throwing MessageBodyWriter not found for media type=application/xml
【发布时间】:2019-03-02 07:10:35
【问题描述】:

我使用 Jersey 开发了一个 REST 服务 (GET)。我想将响应作为 application/xml 返回。 当我注释以下内容时出现异常,而当我将其更改为 MediaType.APPLICATION_JSON 时,服务工作并将响应作为 JSON 返回。 @得到 @Produces(MediaType.APPLICATION_XML)

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/xml

许多博客建议包含对 jersey-media-jaxb 的依赖项,但我有另一个服务成功返回 XML 响应而没有该依赖项。唯一的区别是服务是一个 POST 端点,而当前不工作的是一个 GET 端点。

【问题讨论】:

  • 您可以使用“邮递员”并更改请求类型来检查问题,您可以发布代码摘录吗?
  • 模型是否标注@XmlRootElement?模型类是否有无参数构造函数?两者都是必需的
  • 嗨@Paul Samsotha,我得到了一个XSD 文件,当我用它们生成模型类时,它们只包含以下注释。 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "getCustomerResponse", propOrder = { "_return" }) 没有 XmlRootElement
  • 尝试添加它,看看会发生什么。是否生成了 JAXBContext?
  • 如果您不想将@XmlRootElement 添加到所有类,我认为您可能需要为 JAXBContext 创建一个 ContextResolver。不过我不确定。可能需要注释。

标签: rest jersey-client media-type


【解决方案1】:

如果你的类中没有提到注解@XmlRootElement(name = "name"),请尝试添加它。它对我有用!

【讨论】:

    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2014-12-29
    • 2015-08-05
    • 2017-05-26
    相关资源
    最近更新 更多