SpringBoot項(xiàng)目使用?axis?調(diào)用webservice接口的實(shí)踐記錄
序
實(shí)際工作場景中會(huì)存在對(duì)接去很多系統(tǒng)的數(shù)據(jù)的任務(wù),數(shù)據(jù)對(duì)接呢 方式很多吧,接觸過 :
- http| https請(qǐng)求
- 數(shù)據(jù)庫視圖
- 數(shù)據(jù)庫存儲(chǔ)過程
- soap+xml工單...
然后這兩天接到一個(gè)關(guān)于webservice 數(shù)據(jù)接口的方式對(duì)接,說實(shí)話對(duì)于這個(gè)一臉懵逼,完全不知道是啥(聽一個(gè)比較年長的大哥說一些比較老的系統(tǒng)中喜歡使用這個(gè)進(jìn)行數(shù)據(jù)對(duì)接)。所以只能學(xué)習(xí)一下然后進(jìn)行搞了
WebService
定義
個(gè)人理解
通過度娘等方式,個(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…
全國天氣情況接口:
www.webxml.com.cn/WebServices…
qq在線接口驗(yàn)證接口為例
在接口后面加:/wsdl www.webxml.com.cn/webservices…
訪問查看然后找到下圖中定義的內(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)換問題--> <!-- 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ì)出問題,注意點(diǎn):
- 設(shè)置參數(shù)
- 獲取結(jié)果
xxxx需要填寫真實(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-01Springboot詳解RocketMQ實(shí)現(xiàn)消息發(fā)送與接收流程
這篇文章主要介紹了SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收功能,我們使用主流的SpringBoot框架整合RocketMQ來講解,使用方便快捷,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06詳解SpringBoot?統(tǒng)一后端返回格式的方法
今天我們來聊一聊在基于SpringBoot前后端分離開發(fā)模式下,如何友好的返回統(tǒng)一的標(biāo)準(zhǔn)格式以及如何優(yōu)雅的處理全局異常,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-05-05Java模擬死鎖發(fā)生之演繹哲學(xué)家進(jìn)餐問題案例詳解
這篇文章主要介紹了Java模擬死鎖發(fā)生之演繹哲學(xué)家進(jìn)餐問題,結(jié)合具體演繹哲學(xué)家進(jìn)餐問題的案例形式詳細(xì)分析了死鎖機(jī)制與原理,需要的朋友可以參考下2019-10-10