Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。通常要调用WebService接口需要暴露一个wsdl文档来告诉调用者,可以调用什么方法,需要什么参数,返回值类型等。文档地址通常以wsdl结尾。

如http://www.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl,可以通过浏览器打开,如下图所示:
在这里插入图片描述

先来介绍几个概念:

  • 调用方法名

调用方法名,在webservice暴露的wsdl文档中给出,配合命名空间使用调用接口

  • 命名空间

规范webservice接口,方便调用者调用。

  • 参数

参数就是,调用该接口需要提供的参数。

  • 参数类型

参数类型就是,调用该接口需要提供参数的类型。
在这里插入图片描述
如上图所示,wsdl文档描述的接口信息。下面开始wsdl接口的调用。

使用hutool的SoapClient调用WebService接口步骤:

  1. 引入依赖
<dependency>
	 <groupId>cn.hutool</groupId>
	 <artifactId>hutool-all</artifactId>
	  <version>5.7.22</version>
</dependency>
  1. 代码调用
//wsdl文档地址
String wsdlUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
//创建soap客户端
SoapClient soapClient = SoapClient.create(wsdlUrl)
                 // 设置调用方法名称以及命名空间
                .setMethod("getWeatherbyCityName", "http://WebXml.com.cn/")
                 // 设置参数名称及参数值
                .setParam("theCityName", "深圳")
                // 设置超时时间
                .setConnectionTimeout(15000)
                .setReadTimeout(15000)
                .timeout(15000);
                // 还有其他可以配置,根据自己的需求配置
// 调用webservice接口        
String result = soapClient.send();
// 打印
System.out.println(result);
  1. 结果在这里插入图片描述

其他方式调用:

  • IDEA生成调用类调用接口
  • CXF调用
  • RPC调用
  • HttpClinet调用
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐