安卓調用WebService(ksoap2)

安卓獲取航班信息

  1. 效果截圖:

  2. 工程截圖:

  3. 關鍵代碼:

package com.example.service;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
/**
 * WebService工具類
 * 
 * @author 銳
 * 
 */
public class WebServiceUitl {
 /**
  * 靜態方法獲取結果
  * 
  * @param endPoint
  *            webService地址
  * @param methodName
  *            方法
  * @param soapAction
  *            SoapAction
  * @param nameSpace
  *            命名空間
  * @param pars
  *            參數名數組
  * @param vals
  *            參數值數組
  * @return SoapObject對象
  */
 public static SoapObject getResult(String endPoint, String methodName,
   String soapAction, String nameSpace, String[] pars, String[] vals) {
  // 創建 SoapObject 對象,指定命名空間和調用的方法
  SoapObject soapObject = new SoapObject(nameSpace, methodName);
  // 判斷參數
  if (pars != null) {
   // 設置參數名和參數值
   for (int i = 0; i < pars.length; i++) {
    soapObject.addProperty(pars[i], vals[i]);
   }
  }
  // 生成SOAP請求信息,並指定SOAP的版本
  SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
    SoapEnvelope.VER11);
  // 申明調用的是 dotNet 開發的 WebService
  envelope.dotNet = true;// 相當於envelope.bodyOut=soapObject;
  // 將SoapObject 對象設置到請求信息中
  envelope.setOutputSoapObject(soapObject);
  // 傳輸協議對象,指定訪問的webService地址
  HttpTransportSE transportSE = new HttpTransportSE(endPoint);
  try {
   // 訪問WebService,指定SoapAction和請求信息
   transportSE.call(soapAction, envelope);
  } catch (Exception e) {
   e.printStackTrace();
  }
  // 獲得返回數據
  SoapObject object = (SoapObject) envelope.bodyIn;
  // 返回數據
  return object;
 }
}
package com.example.uitl;
import java.util.ArrayList;
import java.util.List;
import org.ksoap2.serialization.SoapObject;
import com.example.entity.AirlineEntity;
/**
 * 工具類
 * @author 銳
 *
 */
public class MyUitl {
 /**
  * 靜態方法解析航班信息數據
  * 
  * @param result
  *            SoapObject結果對象
  * @return List<AirlineEntity>
  */
 public static List<AirlineEntity> getResult(SoapObject result) {
  List<AirlineEntity> airlineEntities = new ArrayList<AirlineEntity>();
  SoapObject getDomesticAirlinesTimeResult = (SoapObject) result
    .getProperty("getDomesticAirlinesTimeResult");
  SoapObject diffgram = (SoapObject) getDomesticAirlinesTimeResult
    .getProperty("diffgram");
  SoapObject Airlines = (SoapObject) diffgram.getProperty("Airlines");
  for (int i = 0; i < Airlines.getPropertyCount(); i++) {
   SoapObject AirlinesTime = (SoapObject) Airlines.getProperty(i);
   String company = String
     .valueOf(AirlinesTime.getProperty("Company"));
   String airlineCode = String.valueOf(AirlinesTime
     .getProperty("AirlineCode"));
   String startDrome = String.valueOf(AirlinesTime
     .getProperty("StartDrome"));
   String arriveDrome = String.valueOf(AirlinesTime
     .getProperty("ArriveDrome"));
   String startTime = String.valueOf(AirlinesTime
     .getProperty("StartTime"));
   String arriveTime = String.valueOf(AirlinesTime
     .getProperty("ArriveTime"));
   String mode = String.valueOf(AirlinesTime.getProperty("Mode"));
   String airlineStop = String.valueOf(AirlinesTime
     .getProperty("AirlineStop"));
   String week = String.valueOf(AirlinesTime.getProperty("Week"));
   AirlineEntity airlineEntity = new AirlineEntity(company,
     airlineCode, startDrome, arriveDrome, startTime,
     arriveTime, mode, airlineStop, week);
   airlineEntities.add(airlineEntity);
  }
  return airlineEntities;
 }
}

 

工程是用4點3的版本開發的,不同版本的改一下版本號,dome資源地址:http://download.csdn.net/detail/u013897264/7039547

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章