利用idea生成webservice客戶端超詳解步驟(wsdl文件的使用)
一、idea安裝webservice
1.點(diǎn)擊左上file,選中settings

2.下載Web Service

3.給此項(xiàng)目添加webservice


4.添加webservice的依賴
<!--webservice的:TestCase需要的jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>二、利用idea根據(jù)wsdl文件自動(dòng)生成webService客戶端代碼(然后比照著生成的測(cè)試類進(jìn)行接口或方法的調(diào)用)
步驟:1.利用idea根據(jù)wsdl文件生成代碼,需要先將wsdl文件下載到本地
2.下載時(shí)無(wú)必要要求,選擇Apache Axis,依賴需要自行百度搜索
3.下載后需要比照著測(cè)試類代碼,寫調(diào)用接口或方法的代碼
好處:1.入?yún)⒌膮?shù)不需要自己進(jìn)行封裝 , 特別容易寫
2.返回值都被封裝好了 , 可以很容易就取到 , 不用自己寫解析代碼
1.打開tools -> WebServices -> Generate Java Code From Wsdl,按照?qǐng)D中順序進(jìn)行

2.按照?qǐng)D中順序進(jìn)行操作,最后點(diǎn)擊OK

3.必須勾選Generate TestCase
(會(huì)給出調(diào)用接口的例子,照著抄就可以實(shí)現(xiàn)調(diào)用指定接口)

4.2點(diǎn)擊ok報(bào)錯(cuò) , 就去百度下載Axis所需的依賴 , 第一次需額外下載一個(gè)插件(直接下載完就行)
只要不是報(bào)wsdl文件出錯(cuò) , 其他報(bào)錯(cuò)后,只要能生成代碼 , 就可以使用
4.wsdl文件轉(zhuǎn)換生成Java代碼:成功
例子1:

例子2:

5.如何使用生成的代碼
點(diǎn)擊打開名字中帶Test的這個(gè)類,找到你需要的方法,直接復(fù)制出來(lái)就能用

三、直接利用Axis2調(diào)用wsdl類型接口:
好處:不用利用idea根據(jù)wsdl自動(dòng)生成webService客戶端代碼,然后再比照著測(cè)試類調(diào)用所需方法
壞處: 1.入?yún)⑿枰约哼M(jìn)行參數(shù)的封裝 ,自己封裝參數(shù)有例子也不容易
2.如果需要獲取調(diào)用接口的返回值,則還不會(huì)解析返回的數(shù)據(jù),無(wú)法得到所需的參數(shù)(沒(méi)解析報(bào)文的例子,自己不會(huì)寫)
Axis2 調(diào)用接口示例:
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class Test {
public static void test() {
String userId = "123";
String bindAccount = "123";
RPCServiceClient serviceClient = null;
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace omDiag = factory.createOMNamespace("http://diagnosis.interfaces.axis2.osf.nort hbound.neal.cpehg.ums.zte.com", "diag");
OMNamespace omXSD = factory.createOMNamespace("http://model.common.northbound.neal.cpehg. ums.zte.com/xsd", "xsd");
try {
serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定調(diào)用WebService的URL
EndpointReference targetEPR = new EndpointReference("http://10.46.60.200:9094/axis2/services/Cpe112Diag nosisWebServices?wsdl");
options.setTo(targetEPR);
options.setTimeOutInMilliSeconds(30000);
options.setManageSession(true);
// 指定方法的參數(shù)值
OMElement paramRequest = factory.createOMElement("request", omDiag);
OMElement paramUserId = factory.createOMElement("userID", omXSD);
paramUserId.setText(userId);
OMElement paramBindAccount = factory.createOMElement("bindAccount", omXSD);
paramBindAccount.setText(bindAccount);
paramRequest.addChild(paramBindAccount);
paramRequest.addChild(paramUserId);
OMElement paramItemName = factory.createOMElement("itemName", omDiag);
paramItemName.setText("cpehg.diagnosis.CpeBasicInfo");
String method = "getParameterValuesFromDbAndCpeByItemName";
OMElement data = factory.createOMElement(method, omXSD);
data.setNamespace(omDiag);
data.addChild(paramRequest);
data.addChild(paramItemName);
OMElement re = serviceClient.sendReceive(data);
// 處理返回?cái)?shù)據(jù)
} catch (AxisFault e) {
// 異常處理
e.printStackTrace();
} finally {
try {
if (serviceClient != null) serviceClient.cleanupTransport();
} catch (AxisFault e) {
}
}
}
}總結(jié)
到此這篇關(guān)于利用idea生成webservice客戶端的文章就介紹到這了,更多相關(guān)idea生成webservice客戶端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- idea生成WebServices接口的完整流程步驟
- idea沒(méi)有services窗口、沒(méi)有springboot啟動(dòng)項(xiàng)問(wèn)題
- idea如何在service窗口中顯示多個(gè)服務(wù)
- idea使用mybatis插件mapper中的方法爆紅的解決方案
- IDEA中@Autowired自動(dòng)注入MyBatis?Mapper報(bào)紅警告的幾種解決方法
- idea中springboot整合mybatis找不到mapper接口的原因分析
- idea注入mapper報(bào)錯(cuò)報(bào)紅的幾種解決方案
- idea中service或者mapper引入報(bào)紅的問(wèn)題及解決
相關(guān)文章
Stream distinct根據(jù)list某個(gè)字段去重的解決方案
這篇文章主要介紹了Stream distinct根據(jù)list某個(gè)字段去重,stream的distinct去重方法,是根據(jù) Object.equals,和 Object.hashCode這兩個(gè)方法來(lái)判斷是否重復(fù)的,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Mybatis之Mapper動(dòng)態(tài)代理實(shí)例解析
這篇文章主要介紹了Mybatis之Mapper動(dòng)態(tài)代理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
mybatis插件實(shí)現(xiàn)自定義改寫表名實(shí)例代碼
在數(shù)據(jù)庫(kù)操作過(guò)程中,經(jīng)常有修改表名的需求,下面這篇文章主要給大家介紹了關(guān)于mybatis插件實(shí)現(xiàn)自定義改寫表名的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Spring如何實(shí)現(xiàn)輸出帶動(dòng)態(tài)標(biāo)簽的日志
文章介紹了如何通過(guò)動(dòng)態(tài)標(biāo)簽日志實(shí)現(xiàn),解決了部分業(yè)務(wù)代碼在多個(gè)模塊中調(diào)用時(shí)日志無(wú)法直觀看出來(lái)源的問(wèn)題,主要通過(guò)ThreadLocal存儲(chǔ)業(yè)務(wù)標(biāo)簽,并在日志輸出時(shí)插入該標(biāo)簽,實(shí)現(xiàn)日志的動(dòng)態(tài)標(biāo)簽功能,感興趣的朋友一起看看吧2024-12-12
Java中HTTP GET方法調(diào)用帶有body的問(wèn)題解決
這篇文章主要為大家詳細(xì)介紹了Java如何解決HTTP GET方法調(diào)用帶有body的問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2024-02-02
Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀
這篇文章主要介紹了關(guān)于Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別
這篇文章主要介紹了Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別,在使用list?結(jié)合的時(shí)候習(xí)慣了?list=null?;在創(chuàng)建這樣的方式,但是發(fā)現(xiàn)使用list的clear?方法很不錯(cuò),尤其是有大量循環(huán)的時(shí)候<BR>list.clear()與list?=?null?區(qū)別,需要的朋友可以參考下2023-08-08

