WebService客户端代码生成
分享一下之前在工作上使用webService的技术,调取别的提供商的文章信息。
1、WebService简介
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然。跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。 远程调用,就是一台计算机的应用可以调用其他计算机上的应用。例如:支付宝,支付宝并没有银行卡等数据,它只是去调用银行提供的接口来获得数据。还有天气预报等,也是气象局把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能。
2、主要框架比较
参考:https://blog.csdn.net/dzq_boyka/article/details/80360297
3、生成方法
由于提供商用到的是axis1来写的服务端,下面介绍一下如何使用axis1.4生成webService客户端
1、下载 axis1.4 工具
2、解压并在同级目录创建 bat 文件,内容如下(双击bat自动生成客户端文件)
set axis_lib=C:\software\axis-bin-1_4\axis-1_4\lib
set java_cmd=java -Djava.ext.dirs=%axis_lib%
set axis_servlet=http://localhost:8080/axis2/services/HelloService?wsdl
%java_cmd% org.apache.axis.wsdl.WSDL2Java -u %axis_servlet%
**注意**
第一个是工具里面的lib地址
第二个一般不需要修改
第三个是接口的地址
第四个一般不需要修改
这段代码定义了 axis 的 lib,作为 java 执行的库文件目录;接着配置了 web service 的服务端 URL 地址(一般以 wsdl 为后缀);最后执行 WSDL2Java 方法生成客户端代码。生成的代码会放在 bat 所在的当前目录下,展开如下图
3、把生成的类都copy到你的项目中,调用即可。
public static void main(String[] args) throws Exception {
HelloServiceLocator locator = new HelloServiceLocator();
//locator.getHelloServiceHttpSoap11EndpointAddress()
//http://localhost:8080/axis2/services/HelloService.HelloServiceHttpSoap11Endpoint/
// 生成的客户端代码中有XxxStub类,可如下方式使用
HelloServiceSoap11BindingStub stub = new HelloServiceSoap11BindingStub(new URL(locator.getHelloServiceHttpSoap11EndpointAddress()), new
org.apache.axis.client.Service());
System.out.println(stub.sayHello());//webservice服务端暴漏给客户端的方法
}