android中通過webservice調用服務器端其實還是很簡單的,只要按部就班的按照下面步驟進行即可:
(1)創建HttpTransportSE對象,該對象用于調用WebService操作
代碼如下:
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
(2)創建SoapSerializationEnvelope對象
代碼如下:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope
(SoapEnvelope.VER11);
(3)創建SoapObject對象,創建該對象時需要傳入所要調用的Web Service的命名空間和WebService方法名
代碼如下:
SoapObject request = new SoapObject(SERVICE_NS, methodName);
(4)如果有參數傳給Web Service服務器端,調用SoapObject對象的addProperty(String name, Object value)方法來設置參數,該方法的name參數指定參數名
注意:參數名不一定要與服務端的方法中的參數名相同,只要對應順序相同即可;value參數指定參數值
代碼如下:
request.addProperty("name", "1006010054");
(5)調用SoapSerializationEnvelope的setOutputSoapObject()方法,或者直接對bodyOut屬性賦值,將前兩步創建的SoapObject對象設為SoapSerializationEnvelope的傳出SOAP消息體
代碼如下:
envelope.bodyOut = request;
(6)調用對象的call()方法,并以SoapSerializationEnvelope作為參數調用遠程的web service
代碼如下:
ht.call(null, envelope);
(7)掉用完成后,訪問SoapSerializationEnvelope對象的bodyIn屬性,該屬性返回一個SoapObject對象,該對象就代表Web service的返回消息,解析該對象,即可獲得調用web service的返回值
代碼如下:
SoapObject result = (SoapObject) envelope.bodyIn;
String name = result.getProperty(0).toString();