【问题标题】:How does biding happens in JAX-Rs xml to object?在 JAX-Rs xml 中如何对对象进行投标?
【发布时间】:2019-05-22 06:03:43
【问题描述】:

我一直在探索如何使用 Web 服务,我发现了一篇关于 JAX-Rs 的好文章,它是使用 Rest Webservices 的方式。我的任务是点击返回 XML 作为响应的 URL,并应将其转换为我使用以下代码实现的对象。

 client = ClientBuilder.newClient();
 //example query params: ?q=Turku&cnt=10&mode=json&units=metric
  target = client.target(
                "http://api.openweathermap.org/data/2.5/weather")
                   .queryParam("appid", apikey)
                   .queryParam("units", "metric")
                ;

这是一段代码,它将我的 XML 响应映射到 java 对象

  Example exampleObject =  target.request(MediaType.APPLICATION_XML).get(Example.class);

这很好用,但问题是我的领导说使用 JIBX,因为它更快。

问题1:target.request如何转换xml响应(是使用jibx还是jaxb等??) 问题 2:如果我使用 JIBX,我需要将响应下载为流并进行编组和解组,我发现这不是使用 Web 服务的正确方式,我是对的吗??

请在这方面提供帮助。

【问题讨论】:

    标签: java web-services jaxb jax-rs jibx


    【解决方案1】:

    1:JAX-RS 使用 MessageBodyReaders 将 HTTP 实体流转换为对象。默认情况下,所有 JAX-RS 实现都需要提供一个 MessageBodyReader(和 Writer),当内容类型为 application/xml 时,该 MessageBodyReader 使用 JAXB 对 XML 进行序列化/反序列化。

    2:如果您想使用 JAXB 以外的东西来反序列化 XML,您可以编写自己的 MessageBodyReader 来使用“application/xml”。这将覆盖内置的 JAXB 阅读器。 此处提供了如何执行此操作的示例: https://memorynotfound.com/jax-rs-messagebodyreader/

    希望这会有所帮助,安迪

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多