在JAX-RS XML中,如何发生bide



我一直在探索如何消费Web服务,我在JAX-RS上找到了一篇很好的文章,这是消费REST WEBS服务的方法。我的任务是击中返回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,我需要将响应下载为流,并进行编组和删除,这是我发现不正确的消费网络服务的方法,我是对的?

请为此提供帮助。

1:JAX-RS使用MessageBodyReaders将HTTP Entity Stream转换为对象。默认情况下,所有JAX-RS实现都需要运送MessageBodyReader(和Writer(,该消息使用JAXB在内容类型为应用程序/XML时使用JAXB序列化/deperialize to/trom XML。

2:如果您想使用JaxB以外的其他内容来挑选XML,则可以编写自己的MessageBodyReader,以消耗" Application/XML"。那将覆盖内置的JAXB阅读器。这里有一个可用的示例:https://memorynotfound.com/jax-rs-messagebodyreader/

希望这有帮助,安迪

相关内容

  • 没有找到相关文章

最新更新