gpt4 book ai didi

为 REST 服务创建客户端 stub 的 java 工具

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:55 25 4
gpt4 key购买 nike

假设我得到了一个用于 REST 网络服务的 WADL,并且我已经能够在 SoapUI 中将一堆请求放在一起(我对 REST 或 SOAP 并不陌生)- 我已经设法获得wadl2java 工具,用于从我的 WADL 自动生成和编译类。

是否有任何教程演示如何使用这些类来访问我的 REST 网络服务?理想情况下,我想避免使用大型框架(Spring 可能不错,但目前我想将依赖性降到最低)。

此 url 提供了使用 wadl2java 的提示,但同样,似乎没有人在可行的教程中提供任何实际使用工作产品的示例? create client side java classes from a RESTful service in CXF

编辑:我正在使用 wadl2java maven 插件,它很棒。除了我发现的一个错误外,它可以完美地生成(和编译) stub 代码。我将查看下面提供的一些答案并添加我的反馈。

3 月 13 日编辑:
Maven cxf-wadl2java-plugin 创建了文件:target\generated-sources\cxf\com\example\services\v2\package-info.java:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.example.com/services/v2",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.example.services.v2;

看起来这不是我希望的简单解决方案。
作为引用,我得到的错误是:[com.sun.istack.SAXException2:无法将类型“com.example.services.v2.ModelCriteria”编码为元素,因为它缺少 @XmlRootE元素注解]

我最终使用的代码:

    JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
bean.setAddress("https://example.com/services/v2/rest");
bean.setUsername(...);
bean.setPassword(...);
bean.setResourceClass(ModelRestService.class);

bean.getOutInterceptors().add( new org.apache.cxf.interceptor.LoggingOutInterceptor() );

ModelRestService model = bean.create(ModelRestService.class);

ModelCriteria mc = oFact.createModelCriteria();
mc.setModelNumber("Test");

FindModelResult fmResult = model.findByCriteria(mc);

剩下的 @XmlRootElement 错误是因为我没有完全限定 REST 端点/services/v2/rest。

最佳答案

假设您使用 CXF 并且您有一个为服务端点生成的类 BookStore

BookStore store = JAXRSClientFactory.create("http://bookstore.com",
BookStore.class);
Books books = store.getAllBooks();

有关详细信息,请参阅以下链接:

关于为 REST 服务创建客户端 stub 的 java 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22335358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com