如何从现有的基于XML的RESTful服务创建Java Jersey客户端

时间:2016-08-27 18:06:14

标签: java xml web-services rest soap

我习惯与SOAP Webservices集成,其中 wsdl 可以访问,并可用于使用 wsimport 生成Java客户端。我最近获得了一个RESTful端点,它使用XML作为有效负载类型。据我所知,没有 WADL \ Swagger YML 文件我可以访问以获取服务的定义。

到目前为止我所知道的是:
1.终点
2.它在HTTP基本身份验证后运行 3.它接受POST 4.我所有的三个测试XML有效负载似乎都“工作”,返回与我想要做的事情有关的XML响应 5.根据我执行的操作,URI不会改变,服务会根据不同的XML输入做出不同的反应(请求包含一个payload-id属性,似乎表明正在执行的操作类型)

从上面看,服务看起来并不像“类似REST”,它可能只是一个进程侦听特定请求的端口并执行粗略的字符串操作来解析值,然后使用字符串连接来粗略地构建响应。我在大多数情况下都认为REST只是处于较低水平,但我希望以某种方式更好地管理服务的明显粗糙。

我如何为这项服务生成一个“干净”的Java客户端(类似于wsimport可以做什么),因为我有3个不同操作的XML样本请求似乎是暴露的?

对于上述内容,我认为我自己需要创建 WADL \ Swagger YML ,或者可能有一个工具可以使用我必须动态构建这些定义的请求?

1 个答案:

答案 0 :(得分:0)

我们最终使用了Feign这是一个Java到HTTP客户端绑定器。它的Netflix OSS似乎是一个较旧的库(osslifecycle = archived)。

包装HTTP服务非常简单,因为它只有一个我们POST一个XML有效负载的URI。我们收到了服务所有者的XSD,我们已经将其转换为JAXB对象,然后在Feign调用中进行封送和取消封送。 Feign有编码器和解码器的概念,您可以使用它来编写自己的映射器或使用提供的映射器(JAXBEncoder \ JAXBDecoder)。