我习惯于与 SOAP Web 服务集成,其中 wsdl 是可访问的,并且可用于使用 wsimport 生成 Java 客户端。我最近得到了一个 RESTful 端点,它使用 XML 作为负载类型。据我所知,没有可以访问的 WADL\Swagger YML 文件来获取服务的定义。
到目前为止我所知道的是:
1. 端点
2.它在HTTP基本身份验证后面运行
3.它接受POST
4. 我拥有的 3 个测试 XML 有效负载似乎都“有效”,返回与我正在尝试执行的操作相关的 XML 响应
5. URI 不会根据我执行的操作而改变,服务会根据不同的 XML 输入做出不同的 react (请求包含一个有效负载 ID 属性,它似乎指示正在执行的操作类型)
鉴于我有针对似乎公开的 3 个不同操作的 XML 示例请求,我如何才能为此服务生成一个“干净”的 Java 客户端(类似于使用 wsimport 完成的操作)?
对于上述情况,我认为我需要自己创建 WADL\Swagger YML,或者也许有一个工具可以使用我必须动态构建这些定义的请求?
最佳答案
我们最终选择使用 Feign这是一个 Java 到 HTTP 客户端绑定(bind)器。它是 Netflix OSS,但似乎是一个较旧的库 (osslifecycle=archived)。
包装 HTTP 服务非常简单,因为它只有一个 URI,我们可以将 XML 负载发布到该 URI。我们从服务所有者处收到了 XSD,我们已将其转换为 JAXB 对象,然后在 Feign 调用中对其进行编码和取消编码。 Feign 有一个编码器和解码器的概念,您可以使用它们来编写自己的映射器或使用提供的映射器(JAXBEncoder\JAXBDecoder)。
关于java - 如何从现有的基于 XML 的 RESTful 服务创建 Java Jersey 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184224/