當(dāng)我們拿到一個(gè)接口的時(shí)候,先別急著去調(diào)用它,我們得先測(cè)試這個(gè)接口是否正確,是否能調(diào)用成功,以及返回的數(shù)據(jù)是否是我們需要的類型等等。這時(shí)候我們需要一個(gè)工具,比如SoapUI。(最好用綠色免安裝版的。)然后去測(cè)試接口的可行性。

可行之后再帶入咱們的代碼里面。這里需要用到CXF插件,百度隨處可下。下面是我調(diào)用webservice的代碼,參數(shù)分別為接口地址,調(diào)用接口的方法名以及方法的參數(shù)。非常的簡(jiǎn)單。
public static Object[] invokeRemoteMethod(String url, String operation, Object[] parameters){
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
if (!url.endsWith("wsdl")) {
url += "?wsdl";
}
org.apache.cxf.endpoint.Client client = dcf.createClient(url);
//處理webService接口和實(shí)現(xiàn)類namespace不同的情況,CXF動(dòng)態(tài)客戶端在處理此問題時(shí),會(huì)報(bào)No operation was found with the name的異常
Endpoint endpoint = client.getEndpoint();
QName opName = new QName(endpoint.getService().getName().getNamespaceURI(),operation);
BindingInfo bindingInfo= endpoint.getEndpointInfo().getBinding();
if(bindingInfo.getOperation(opName) == null){
for(BindingOperationInfo operationInfo : bindingInfo.getOperations()){
if(operation.equals(operationInfo.getName().getLocalPart())){
opName = operationInfo.getName();
break;
}
}
}
Object[] res = null;
try {
res = client.invoke(opName, parameters);
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
ps:
對(duì)于一個(gè)懶人來說,很多東西不一定要懂,只需要會(huì)用則好。好比窮人手里的100塊和富人手里的100塊完全就是兩個(gè)概念,懶人的100分精力就相當(dāng)于窮人手里的100塊,當(dāng)然不能亂花。有人會(huì)說,你上網(wǎng)玩游戲逛街的時(shí)候精力怕是有1w!!我只能回答,精力需要對(duì)事對(duì)人。或許我們這種人的成就很低,甚至沒有成就,一生庸庸碌碌~~~ 可能我的價(jià)值觀比較低吧,覺得沒所謂,日子能過就好,就好像牛排和豬肉,它們帶給我的味覺沖擊其實(shí)是差不多的,但是豬肉更便宜,我當(dāng)然會(huì)選擇豬肉!!
不愛展望未來,但喜珍惜當(dāng)下~

浙公網(wǎng)安備 33010602011771號(hào)