Axis2呼叫WebService

Hoking發表於2016-12-04

       本例使用的版本為是Axis2-1.5.4。需要引入如下jar包。

 /lib/axiom-api-1.2.10.jar

 /lib/axiom-impl-1.2.10.jar

/lib/axis2-adb-1.5.4.jar

 /lib/axis2-kernel-1.5.4.jar

 /lib/axis2-transport-http-1.5.4.jar

 /lib/axis2-transport-local-1.5.4.jar

 /lib/commons-codec-1.3.jar

 /lib/commons-httpclient-3.1.jar

 /lib/commons-logging-1.1.3.jar

 /lib/wsdl4j-1.6.2.jar

 /lib/XmlSchema-1.4.3.jar

 /lib/neethi-2.0.4.jar

 /lib/mail-1.4.jar

 /lib/httpcore-4.0.jar

        本例使用的遠端Web服務為,天氣預報服務:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx。案例演示的呼叫的方法為getSupportCity,查詢本天氣預報Web Services支援的國內外城市或地區資訊。

輸入引數:byProvinceName = 指定的洲或國內的省份,若為ALL或空則表示返回全部城市;

返回資料:一個一維字串陣列 String(),結構為:城市名稱(城市程式碼)。

       具體操作建立RPCClient

public class RPCClient {

	public static void main(String[] args) {
		
		try {
			//使用RPC方式呼叫WebService
			RPCServiceClient rpcServiceClient = new RPCServiceClient();
			Options options = rpcServiceClient.getOptions();
			
			//指定呼叫WebService的URL
			String address = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
			EndpointReference targetEndpoint = new EndpointReference(address);
			options.setAction("http://WebXml.com.cn/getSupportCity");
			options.setTo(targetEndpoint);
			// 如果報錯提示Content-Length,請求內容長度 
			options.setProperty(HTTPConstants.CHUNKED, "false");
			
			//指定要呼叫的getSupportCity方法及WSDL檔案的名稱空間
			OMFactory omFactory = OMAbstractFactory.getOMFactory();
			OMNamespace omNamespace = omFactory.createOMNamespace("http://WebXml.com.cn/", "");
			OMElement method = omFactory.createOMElement("getSupportCity", omNamespace);
			OMElement param = omFactory.createOMElement("byProvinceName", omNamespace);
			
			//指定getSupportCity方法的引數值
			param.setText("ALL");
			method.addChild(param);
			OMElement result = rpcServiceClient.sendReceive(method);
			
			System.out.println(result.toString());
			
		} catch (AxisFault e) {
			e.printStackTrace();
		}
	}

所需jar的下載地址為:點選下載

相關文章