- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用返回 XML 数据的 Web 服务
Client client = ClientBuilder.newClient();
String seLogerAPI = "http://ws.seloger.com/search.xml";
// Defining some query params. Full doc : https://github.com/bodinsamuel/seloger-php/blob/master/API.md
// More : https://github.com/pasnox/housing/blob/master/SeLoger.com.api.txt
WebTarget target = client.target(seLogerAPI)
.queryParam("idtypebien", "1") // apartements
.queryParam("idtt", "1") // Renting
.queryParam("nb_pieces", "5")
.queryParam("cp", "95330")
;
Response result = target.request(MediaType.TEXT_XML_TYPE).get();
ResponseRecherche res = result.readEntity(new GenericType<ResponseRecherche>() {});
System.out.println(res);
但是我遇到了这个错误:未找到 Media type=text/xml;charset=utf-8 的 MessageBodyReader
Response result = target.request(MediaType.TEXT_XML_TYPE).get();
工作正常,但是当我尝试使用将其放入 POJO 时
ResponseRecherche res = result.readEntity(new GenericType<ResponseRecherche>() {});
引发了 org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException...
仅供引用:ResponseRecherche 是一个 POJO,其结构与 Web 服务的答案相同。我正在关注本教程:https://vaadin.com/blog/-/blogs/consuming-rest-services-from-java-applications
不太明白为什么
我的pom.xml
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.25</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.25</version>
</dependency>
感谢您的阅读
最佳答案
错误消息表明您的 JAX-RS 实现无法将 XML 转换为 POJO (ResponseRecherche)。 JAX-RS 使用 MessageBodyReaders 将响应实体转换为 Java 对象。所有 JAX-RS 实现都需要提供一组内置的 MessageBodyReaders,但用户可以提供自己的用于自定义转换。
您可能有两种解决方案:1) 使用内置的 JAXB MessageBodyReader - 为此,您需要使用 JAXB 注释(例如 @XmlRootElement 等)来注释 POJO。有关将 JAXB 与 JAX-RS 结合使用的一个很好的教程 - 包括如何注释对象类可以是在这里找到: https://dennis-xlc.gitbooks.io/restful-java-with-jax-rs-2-0-2rd-edition/en/part1/chapter6/jaxb.html
2) 创建并注册您自己的 MessageBodyReader,它可以将 XML 从远程站点转换为您的 ResponseRecherche 对象。同一个教程提供了一些关于如何创建自定义 MessageBodyReaders 的有用信息: https://dennis-xlc.gitbooks.io/restful-java-with-jax-rs-2-0-2rd-edition/en/part1/chapter6/custom_marshalling.html
请注意,由于您使用的是 JAX-RS 客户端 API,因此您需要显式注册自定义 MessageBodyReader,如下所示:
Client client = ClientBuilder.newClient();
client.register( MyMessageBodyReader.class );
希望这有帮助,安迪
关于java - JaxRS 读取文本/xml 响应 MessageBodyProviderNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185060/
我正在用 Java 为一个类开发 RESTful API。我正在使用 JAX-RS 我遵循了本教程 "JAX-RS Jersey" 。一切正常,除了当我尝试执行 response.readEntity
我正在使用 Java Jersey 框架(带有 Maven),并使用 IntelliJ 作为我的 IDE。我遇到了这个运行时异常,它只在我尝试从命令行运行代码时发生(使用 maven 进行编译,然后使
大家好我正在尝试从头开始创建一个休息网络服务。这是我的服务部分 @Path("/Phones") public class PhonessResource { @GET @Produces({Me
我是 Java Web 服务的新手,我正在努力解决一个基本问题。 在找到一堆过时的示例后,我设法得到了一些使用 XML 的东西,但是当我要求它返回 JSON 时,相同的代码将无法工作。 最初我认为这是
我解释一下我的问题。我发送一个来 self 的 User 类的对象。我将其从我的网站发送到我的 Restful 服务。但我尝试拥有它,并且我在参数中尝试的所有类型都无效或为 null : 发送类(cl
我想使用返回 XML 数据的 Web 服务 Client client = ClientBuilder.newClient(); String seLogerAPI = "http:/
我正在使用 Jersey 编写 JAX_RS 应用程序。所有以 JSON 形式返回单个对象的端点在 Tomcat 和 WildFly 中都可以正常工作。 一个返回对象集合的端点在 Tomcat 中工作
我正在使用 JAX-RS( Jersey )和 Glassfish 作为服务器开发 RESTful Web 服务。我实现了返回实体列表的简单方法,当我尝试访问它时,服务器会抛出 500 错误 org.
我一直在研究如何创建 JAX Restful 服务……使用此处提供的指南 - Jersey 如第 2.3.2 节所述,我在 Maven 中添加了以下依赖项 - org.glassfish.j
我使用 Jersey 并决定使用 GSON 而不是 Moxy 进行 JSON 处理(不喜欢 Moxy 需要 setter )。 到目前为止,一切工作正常,除了我的 JerseyTest 子类中的一个非
我正在尝试使用 Jersey 客户端调用 REST 服务(不使用 Jersey/JAX-RS)。以下代码可以很好地发布我的表单数据并接收响应: Form form = new Form();
我正在创建我的第一个网络服务,所以我可能遗漏了一些非常简单的东西。我在没有 Maven 的 Tomcat 上使用 Jersey 2.x 在 Eclipse Kepler 中创建了一个 Web 服务,它
我正在尝试安装信号服务器 v 0.93,服务器已运行。然后我使用 Signal Android v4.17,当我运行 android 应用程序时,它可以发送短信。但是当我提交验证码时,服务器返回以下错
我有一个使用 Jersey 2.8 的应用程序,我正在尝试升级到 2.22.2。但是当我这样做时,Jersey 不断抛出这些异常: org.glassfish.jersey.message.inter
我正在尝试使用 openfire REST-API-Client。我正在调用使用以下代码将用户添加到 openfire 的方法。 AuthenticationToken authenticationT
我正在尝试调用 request.getEntity 返回自定义类型,但看起来它正在以文本/纯文本而不是 JSON 的形式获取响应,这给了我以下错误。我通过返回一个字符串来测试 get 输出,并且能够以
我是一名优秀的程序员,十分优秀!