axis2客戶端呼叫免費的webservice服務的例項之三axis2使用RPC方式呼叫網上免費WebService
阿新 • • 發佈:2019-02-01
前面兩節我們分別說了呼叫webservice的兩種方式:
下面我們介紹一下第三種方式:axis2使用RPC方式呼叫網上免費WebService
這種方式類似第二種方式,只是用到的類不同,但是這種方式感覺容易出問題。不多說,直接上程式碼
<span style="color:#3b5998;">package com.yy.test; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; //</span><span style="color:#ff6600;">使用webservice無引數的方法:getRegionProvince</span>
其執行結果:public class Test2 { public static void main(String args[]) throws AxisFault{ //使用RPC方式呼叫WebService RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); //指定呼叫WebService的URL EndpointReference targetEPR = new EndpointReference( "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl"); options.setTo(targetEPR); options.setAction("http://WebXml.com.cn/getRegionProvince"); //指定方法的引數值 Object[] opAddEntryArgs = new Object[] {}; //指定要呼叫的方法及WSDL檔案的名稱空間 QName opAddEntry = new QName("http://WebXml.com.cn/", "getRegionProvince"); //呼叫法並輸出該方法的返回值 System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs)); /*Object[] result=serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes); for (Object object : result) { System.out.println(object.toString()); }*/ } }
相同的webservive服務,本次使用有引數的方法:getSupportCityString
public class Test2 {public static void main(String args[]) throws AxisFault{package com.yy.test; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; <a target=_blank href="http://blog.csdn.net/mingliangniwo/article/details/44202139" target="_blank" style="list-style: none; text-decoration: none; word-break: break-all; word-wrap: break-word; font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif;"></a><pre name="code" class="java"><span style="color:#3b5998;">//</span><span style="color:#ff6600;">使用webservice有引數的方法:getSupportCityString</span>
//指定呼叫WebService的URL
RPCServiceClient serviceClient2 = new RPCServiceClient();
Options options2 = serviceClient2.getOptions();
//指定呼叫WebService的URL
EndpointReference targetEPR2 = new EndpointReference(
"http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");
options2.setTo(targetEPR2);
options2.setAction("http://WebXml.com.cn/getSupportCityString");
//指定方法的引數值
Object[] opAddEntryArgs2 = new Object[] {"北京"};
//指定方法返回值的資料型別的Class物件
Class[] classes2 = new Class[] {String.class};
//指定要呼叫的方法及WSDL檔案的名稱空間
QName opAddEntry2 = new QName("http://WebXml.com.cn/", "getSupportCityString");
//呼叫法並輸出該方法的返回值
System.out.println(serviceClient2.invokeBlocking(opAddEntry2, opAddEntryArgs2, classes2));
}
}
其執行結果:
有時還會出現下面這個錯誤:
在網上查了好多,都沒有什麼解決方案,有了答案是讓用方式一或方式二的方式
原因:說的都是webservice服務那邊的問題。
所以大家可以更多的使用方式一或方式二去webserive開發