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

個人理解
通過度娘等方式,個人理解為變相的soap協(xié)議加xml工單處理,
實踐
webservice 常識
一個webservice 接口發(fā)布地址往往類似:
- qq 在線驗證接口:
www.webxml.com.cn/webservices…
- 其他可測試接口:
email電子郵箱地址接口: www.webxml.com.cn/WebServices…
全國天氣情況接口:
www.webxml.com.cn/WebServices…
qq在線接口驗證接口為例
在接口后面加:/wsdl www.webxml.com.cn/webservices…
訪問查看然后找到下圖中定義的內(nèi)容:注意使用關(guān)聯(lián)key找到對應(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)超時
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);
}
}對于以上代碼,我這邊吐槽一下,網(wǎng)上其實很多這個的例子但是實際調(diào)用的時候會出問題,注意點:
- 設(shè)置參數(shù)

- 獲取結(jié)果

xxxx需要填寫真實的QQ號碼
到此這篇關(guān)于SpringBoot項目使用 axis 調(diào)用webservice接口的文章就介紹到這了,更多相關(guān)SpringBoot調(diào)用webservice接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot整合cxf發(fā)布webservice以及調(diào)用的方法
- SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)
- webservice實現(xiàn)springboot項目間接口調(diào)用與對象傳遞示例
- SpringBoot調(diào)用第三方WebService接口的兩種方法
- SpringBoot調(diào)用對方webService接口的幾種方法示例
- springboot調(diào)用webservice-soap接口的實現(xiàn)
- springboot使用webservice發(fā)布和調(diào)用接口的實例詳解
- SpringBoot調(diào)用WebService接口方法示例代碼
相關(guān)文章
java使用Apache工具集實現(xiàn)ftp文件傳輸代碼詳解
這篇文章主要介紹了java使用Apache工具集實現(xiàn)ftp文件傳輸代碼詳解,分享了詳細連接ftp server和上傳文件,下載文件的代碼,以及結(jié)果展示,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12
IDEA如何自動生成serialVersionUID的設(shè)置
這篇文章主要介紹了IDEA如何自動生成 serialVersionUID 的設(shè)置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
SpringCloud中的Feign遠程調(diào)用接口傳參失敗問題
這篇文章主要介紹了SpringCloud中的Feign遠程調(diào)用接口傳參失敗問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringCloud Feign遠程調(diào)用與自定義配置詳解
Feign是Netflix公司開發(fā)的一個聲明式的REST調(diào)用客戶端; Ribbon負載均衡、 Hystrⅸ服務(wù)熔斷是我們Spring Cloud中進行微服務(wù)開發(fā)非?;A(chǔ)的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時出現(xiàn)的,而且配置也都非常相似2022-11-11

