1 SOAP協議整合Android+Webservice
通過http協議,采用HttpClient向服務器端action請求數據。當然調用服務器端方法獲取數據並不止這一種。WebService也可以為我們提供所需數據,那么什么是webService呢?,它是一種基於SAOP協議的遠程調用標准,通過webservice可以將不同操作系統平台,不同語言,不同技術整合到一起。我們在Android開發pc端需要一些庫,比如本次項目中用到的:ksoap2-android-assembly-2.4-jar-with-dependencies.jar庫。
2 基於SOAP協議訪問WebService方法
第一:實例化SoapObject 對象,指定webService的命名空間(從相關WSDL文檔中可以查看命名空間),以及調用方法名稱。如:
SoapObject request=new SoapObject(“http://tempuri.org/”,”EVoucherInquriyHistory” );
第二步:假設方法有參數的話,設置調用方法參數
request.addProperty("參數名稱","參數值");
第三步:設置SOAP請求信息(參數部分為SOAP協議版本號,與你要調用的webService中版本號一致):
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut=request;
第四步:注冊Envelope
(new MarshalBase64()).register(envelope);
第五步:構建傳輸對象,並指明Web文檔URL:
String serviceURL = Constants.EVOUCHER_URL;
AndroidHttpTransport ht = new AndroidHttpTransport(serviceURL);
ht.debug = true;
第六步:調用WebService(其中參數為1:命名空間+方法名稱,2:Envelope對象)
ht.call(serviceNameSpace+methodName, envelope);
如: ht.call((“http://tempuri.org/EVoucherInquriyHistory”, envelope);
第七步:獲取返回結果
SoapObject result = (SoapObject) envelope.bodyIn;
3 SoapObject 解析
SoapObject soapChild=(SoapObject)result.getProperty(int);
For(int i=0; i<soapChild.getPropertyCount();i++){
SoapObject soapChilds=(SoapObject)result.getProperty(i);
String data=soapChilds.getProperty(“Key_Name”).toString();
}