SpringBoot項(xiàng)目使用?axis?調(diào)用webservice接口的實(shí)踐記錄
序
實(shí)際工作場(chǎng)景中會(huì)存在對(duì)接去很多系統(tǒng)的數(shù)據(jù)的任務(wù),數(shù)據(jù)對(duì)接呢 方式很多吧,接觸過(guò) :
- http| https請(qǐng)求
- 數(shù)據(jù)庫(kù)視圖
- 數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程
- soap+xml工單...
然后這兩天接到一個(gè)關(guān)于webservice 數(shù)據(jù)接口的方式對(duì)接,說(shuō)實(shí)話對(duì)于這個(gè)一臉懵逼,完全不知道是啥(聽(tīng)一個(gè)比較年長(zhǎng)的大哥說(shuō)一些比較老的系統(tǒng)中喜歡使用這個(gè)進(jìn)行數(shù)據(jù)對(duì)接)。所以只能學(xué)習(xí)一下然后進(jìn)行搞了
WebService
定義

個(gè)人理解
通過(guò)度娘等方式,個(gè)人理解為變相的soap協(xié)議加xml工單處理,
實(shí)踐
webservice 常識(shí)
一個(gè)webservice 接口發(fā)布地址往往類似:
- qq 在線驗(yàn)證接口:
www.webxml.com.cn/webservices…
- 其他可測(cè)試接口:
email電子郵箱地址接口: www.webxml.com.cn/WebServices…
全國(guó)天氣情況接口:
www.webxml.com.cn/WebServices…
qq在線接口驗(yàn)證接口為例
在接口后面加:/wsdl www.webxml.com.cn/webservices…
訪問(wèn)查看然后找到下圖中定義的內(nèi)容:注意使用關(guān)聯(lián)key找到對(duì)應(yīng)的必要使用的參數(shù)。

maven 使用 axis
應(yīng)用依賴(不可缺失必須)
<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<!-- 解決cell 轉(zhuǎn)換問(wèn)題-->
<!-- https://mvnrepository.com/artifact/javax.xml/jaxrpc-api -->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency>
<!-- 解析調(diào)用結(jié)果以及數(shù)據(jù)轉(zhuǎn)換包-->
<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
</dependency>代碼(粘貼可用)
@Test
public void testWebService() {
try {
//wsdl地址
String endpoint = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx";
//命名空間
String namespace = "http://WebXml.com.cn/";
//服務(wù)名
String serviceName = "qqOnlineWebService";
//方法名
String methodName = "qqCheckOnline";
//soapAction
String soapAction = "http://WebXml.com.cn/qqCheckOnline";
Service service = new Service();
Call call = (Call) service.createCall();
//設(shè)置響應(yīng)超時(shí)
call.setTimeout(3000);
//設(shè)置地址
call.setTargetEndpointAddress(new java.net.URL(endpoint));
//設(shè)置方法名
call.setOperationName(new QName(namespace, methodName));
//設(shè)置參數(shù)
call.addParameter(new QName(namespace, "qqCode")
, org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
//設(shè)置返回類型
call.setReturnType(XMLType.XSD_SCHEMA);
//啟用soap
call.setUseSOAPAction(true);
//設(shè)置soapAction
call.setSOAPActionURI(soapAction);
//設(shè)置服務(wù)名
SOAPService soapService = new SOAPService();
soapService.setName(serviceName);
call.setSOAPService(soapService);
Schema result = (Schema) call.invoke(new Object[]{"xxxxx"});
for (int i = 0; i < result.get_any().length; i++) {
System.out.println(result.get_any()[i]);
}
} catch (Exception e) {
log.error("ddd", e);
}
}對(duì)于以上代碼,我這邊吐槽一下,網(wǎng)上其實(shí)很多這個(gè)的例子但是實(shí)際調(diào)用的時(shí)候會(huì)出問(wèn)題,注意點(diǎn):
- 設(shè)置參數(shù)

- 獲取結(jié)果

xxxx需要填寫(xiě)真實(shí)的QQ號(hào)碼
到此這篇關(guān)于SpringBoot項(xiàng)目使用 axis 調(diào)用webservice接口的文章就介紹到這了,更多相關(guān)SpringBoot調(diào)用webservice接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot整合cxf發(fā)布webservice以及調(diào)用的方法
- SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)
- webservice實(shí)現(xiàn)springboot項(xiàng)目間接口調(diào)用與對(duì)象傳遞示例
- SpringBoot調(diào)用第三方WebService接口的兩種方法
- SpringBoot調(diào)用對(duì)方webService接口的幾種方法示例
- springboot調(diào)用webservice-soap接口的實(shí)現(xiàn)
- springboot使用webservice發(fā)布和調(diào)用接口的實(shí)例詳解
- SpringBoot調(diào)用WebService接口方法示例代碼
相關(guān)文章
java 定時(shí)同步數(shù)據(jù)的任務(wù)優(yōu)化
這篇文章主要介紹了java 定時(shí)同步數(shù)據(jù)的任務(wù)優(yōu)化,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12
詳解Java接口簽名(Signature)實(shí)現(xiàn)方案
這篇文章主要介紹了Java接口簽名(Signature)實(shí)現(xiàn)方案?,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
Springboot詳解RocketMQ實(shí)現(xiàn)消息發(fā)送與接收流程
這篇文章主要介紹了SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收功能,我們使用主流的SpringBoot框架整合RocketMQ來(lái)講解,使用方便快捷,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
詳解SpringBoot?統(tǒng)一后端返回格式的方法
今天我們來(lái)聊一聊在基于SpringBoot前后端分離開(kāi)發(fā)模式下,如何友好的返回統(tǒng)一的標(biāo)準(zhǔn)格式以及如何優(yōu)雅的處理全局異常,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-05-05
Java模擬死鎖發(fā)生之演繹哲學(xué)家進(jìn)餐問(wèn)題案例詳解
這篇文章主要介紹了Java模擬死鎖發(fā)生之演繹哲學(xué)家進(jìn)餐問(wèn)題,結(jié)合具體演繹哲學(xué)家進(jìn)餐問(wèn)題的案例形式詳細(xì)分析了死鎖機(jī)制與原理,需要的朋友可以參考下2019-10-10

