SpringBoot項(xiàng)目使用?axis?調(diào)用webservice接口的實(shí)踐記錄
序
實(shí)際工作場(chǎng)景中會(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使用Apache工具集實(shí)現(xiàn)ftp文件傳輸代碼詳解
這篇文章主要介紹了java使用Apache工具集實(shí)現(xiàn)ftp文件傳輸代碼詳解,分享了詳細(xì)連接ftp server和上傳文件,下載文件的代碼,以及結(jié)果展示,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程
這篇文章主要介紹了Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程,Thread類包含諸多操作線程的方法,非常重要,需要的朋友可以參考下2015-12-12
IDEA如何自動(dòng)生成serialVersionUID的設(shè)置
這篇文章主要介紹了IDEA如何自動(dòng)生成 serialVersionUID 的設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
SpringCloud中的Feign遠(yuǎn)程調(diào)用接口傳參失敗問題
這篇文章主要介紹了SpringCloud中的Feign遠(yuǎn)程調(diào)用接口傳參失敗問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java超詳細(xì)講解如何生成隨機(jī)整數(shù)
在?Java?中,生成隨機(jī)數(shù)的場(chǎng)景有很多,所以本文我們就來盤點(diǎn)一下?幾種生成隨機(jī)數(shù)的方式,以及它們之間的區(qū)別和每種生成方式所對(duì)應(yīng)的場(chǎng)景2022-05-05
SpringCloud Feign遠(yuǎn)程調(diào)用與自定義配置詳解
Feign是Netflix公司開發(fā)的一個(gè)聲明式的REST調(diào)用客戶端; Ribbon負(fù)載均衡、 Hystrⅸ服務(wù)熔斷是我們Spring Cloud中進(jìn)行微服務(wù)開發(fā)非?;A(chǔ)的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時(shí)出現(xiàn)的,而且配置也都非常相似2022-11-11

