更新時間:2022-11-28 12:25:57 來源:動力節(jié)點 瀏覽8204次
WebService遵循SOAP協(xié)議通過XML封裝數(shù)據(jù),然后由Http協(xié)議來傳輸數(shù)據(jù)。通常要調(diào)用WebService接口需要暴露一個wsdl文檔來告訴調(diào)用者,可以調(diào)用什么方法,需要什么參數(shù),返回值類型等。文檔地址通常以wsdl結(jié)尾。
如http://www.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl,可以通過瀏覽器打開,如下圖所示:
調(diào)用方法名
調(diào)用方法名,在webservice暴露的wsdl文檔中給出,配合命名空間使用調(diào)用接口
命名空間
規(guī)范webservice接口,方便調(diào)用者調(diào)用。
參數(shù)
參數(shù)就是,調(diào)用該接口需要提供的參數(shù)。
參數(shù)類型
參數(shù)類型就是,調(diào)用該接口需要提供參數(shù)的類型。
如上圖所示,wsdl文檔描述的接口信息。下面開始wsdl接口的調(diào)用。
1.引入依賴
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
2.代碼調(diào)用
//wsdl文檔地址
String wsdlUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
//創(chuàng)建soap客戶端
SoapClient soapClient = SoapClient.create(wsdlUrl)
// 設(shè)置調(diào)用方法名稱以及命名空間
.setMethod("getWeatherbyCityName", "http://WebXml.com.cn/")
// 設(shè)置參數(shù)名稱及參數(shù)值
.setParam("theCityName", "深圳")
// 設(shè)置超時時間
.setConnectionTimeout(15000)
.setReadTimeout(15000)
.timeout(15000);
// 還有其他可以配置,根據(jù)自己的需求配置
// 調(diào)用webservice接口
String result = soapClient.send();
// 打印
System.out.println(result);
3.結(jié)果
其他方式調(diào)用:
IDEA生成調(diào)用類調(diào)用接口
CXF調(diào)用
RPC調(diào)用
HttpClinet調(diào)用