Web Services 使用Java创建SOAP Web服务客户端应用程序

dddzy1tm  于 2022-11-15  发布在  Java
关注(0)|答案(2)|浏览(201)

我已经在Eclipse中使用Apache CXF用Java创建了一个WebService,现在我必须创建一个WebService客户端应用程序来使用和调用它。我一直在寻找一种方法来实现它,我发现客户端总是依赖于服务器的Java类。
问题是我必须在另一个Java环境中开发一个客户端类。我的问题是:是否有方法仅使用WSDL文件开发独立于Web服务服务器包的客户端类?
感谢您发送编修。

jgwigjjp

jgwigjjp1#

您可以借助Apache CXFLink wsdl to java tool。wsdl2java-获取WSDL文档并生成完整注解的Java代码,从这些代码实现服务。
你也可以利用Eclipse插件的帮助。
Eclipse plugin to generate java class

8ulbf1ek

8ulbf1ek2#

您可以将请求作为XML请求发送到Web服务API。您只需要使用正确的标头和正文构造符合SOAP的请求。通过使用SoapUI,您可以生成XML请求结构,然后在应用程序中重用它。
如果您使用的是Jax-RS(REST API),甚至http方法也可以工作

[更新]

如果您被如何创建客户机类所困扰,那么您可以按照以下步骤操作
1.使用wimport

>  http : //hostname :port/wsdl.url on command line to create proxy classes

1.创建jar文件生成的代理类
1.将jar文件添加到类路径
1.使用服务API构造端点,然后调用服务。
1.下面给出了示例测试客户端。

try {

    URL wsdlURL = new URL("http://localhost:8082/cxf/services/yourservice?wsdl");

    QName SERVICE_NAME = new QName("http://package.name/","PORTNAme");

    Service service = Service.create(wsdlURL, SERVICE_NAME);

    client = service.getPort(PORTInterface.class);

    client.executeYourMethod()

} catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

}
  1. URL是WSDL URL
    1.要创建QName,需要提供服务接口的命名空间(通常是包的反向名称)和PORT名称,您可以在WSDL的绑定部分找到这些名称。
    1.还需要标识代理类(名称类似于端口名)
    干杯Satheesh

相关问题