SpringBoot項目使用 axis 調用webservice接口的實踐記錄
序
實際工作場景中會存在對接去很多系統的數據的任務,數據對接呢 方式很多吧,接觸過 :
- http| https請求
- 數據庫視圖
- 數據庫存儲過程
- soap+xml工單…
然後這兩天接到一個關於webservice 數據接口的方式對接,說實話對於這個一臉懵逼,完全不知道是啥(聽一個比較年長的大哥說一些比較老的系統中喜歡使用這個進行數據對接)。所以隻能學習一下然後進行搞瞭
WebService
定義
個人理解
通過度娘等方式,個人理解為變相的soap協議加xml工單處理,
實踐
webservice 常識
一個webservice 接口發佈地址往往類似:
- qq 在線驗證接口:
www.webxml.com.cn/webservices…
- 其他可測試接口:
email電子郵箱地址接口: www.webxml.com.cn/WebServices…
全國天氣情況接口:
www.webxml.com.cn/WebServices…
qq在線接口驗證接口為例
在接口後面加:/wsdl www.webxml.com.cn/webservices…
訪問查看然後找到下圖中定義的內容:註意使用關聯key找到對應的必要使用的參數。
maven 使用 axis
應用依賴(不可缺失必須)
<!-- 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 轉換問題--> <!-- https://mvnrepository.com/artifact/javax.xml/jaxrpc-api --> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxrpc-api</artifactId> <version>1.1</version> </dependency> <!-- 解析調用結果以及數據轉換包--> <!-- 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/"; //服務名 String serviceName = "qqOnlineWebService"; //方法名 String methodName = "qqCheckOnline"; //soapAction String soapAction = "http://WebXml.com.cn/qqCheckOnline"; Service service = new Service(); Call call = (Call) service.createCall(); //設置響應超時 call.setTimeout(3000); //設置地址 call.setTargetEndpointAddress(new java.net.URL(endpoint)); //設置方法名 call.setOperationName(new QName(namespace, methodName)); //設置參數 call.addParameter(new QName(namespace, "qqCode") , org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); //設置返回類型 call.setReturnType(XMLType.XSD_SCHEMA); //啟用soap call.setUseSOAPAction(true); //設置soapAction call.setSOAPActionURI(soapAction); //設置服務名 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); } }
對於以上代碼,我這邊吐槽一下,網上其實很多這個的例子但是實際調用的時候會出問題,註意點:
- 設置參數
- 獲取結果
xxxx需要填寫真實的QQ號碼
到此這篇關於SpringBoot項目使用 axis 調用webservice接口的文章就介紹到這瞭,更多相關SpringBoot調用webservice接口內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- java調用webservice的.asmx接口的使用步驟
- SpringBoot整合WebService服務的實現代碼
- JavaWe商品項目保姆級解析IDEA版的圖文教程(配置篇)
- 如何兩步解決maven依賴導入失敗的問題
- 使用log4j2關閉debug日志