Google為Android平台開發Web Service客戶端提供了ksoap2-android項目,在這個網址下載開發包http://code.google.com/p/ksoap2-android/source/browse/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/3.1.0/ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar
使用 kspoap2-android調用webserice操作的步驟如下:
1、創建HttpTransportSE傳說對象 傳入webservice服務器地址
- final HttpTransportSE httpSE = new HttpTransportSE(SERVER_URL);
2、 創建SoapObject對象,創建該對象時需要傳入所要調用Wb Service的命名空間、Web Service方法名;如果有參數要傳給Web Service服務器,調用SoapObject對象的addProperty(String name,Object value)方法來設置參數,該方法的name參數指定參數名;value參數指定參數值
- SoapObject soapObject = new SoapObject(PACE, M_NAME);
- soapObject.addProperty("byProvinceName ", citys);
3、創建SoapSerializationEnelope對象,並傳入SOAP協議的版本號;並設置對象的bodyOut屬性
- final SoapSerializationEnvelope soapserial = new SoapSerializationEnvelope(
- SoapEnvelope.VER11);
- soapserial.bodyOut = soapObject;
- // 設置與.NET提供的Web service保持有良好的兼容性
- soapserial.dotNet = true;
6、調用HttpTransportSE對象的call()方法,其中call的第一個參數soapAction,第二個為SoapSerializationEvelope對象 調用遠程Web Service;
- // 調用HttpTransportSE對象的call方法來調用 webserice
- httpSE.call(PACE + M_NAME, soapserial);
7、獲取返回的信息,並解析
- // 獲取服務器響應返回的SOAP消息
- SoapObject result = (SoapObject) soapserial.bodyIn;
- SoapObject detail = (SoapObject) result.getProperty("getSupportProvinceResult");
- //解析返回信息
- for (int i = 0; i < detail.getPropertyCount(); i++) {
- citys.add(detail.getProperty(i).toString());
- }
實例:通過天氣預報 Web 服務 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx來獲取聯動城市