【发布时间】: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