安卓调用WebService(ksoap2)

本文介绍了一种在安卓应用中通过WebService获取国内航班信息的方法。利用SOAP协议,该应用可以实现航班信息的实时查询,并详细展示了关键代码及数据解析过程。

安卓获取航班信息

  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.youkuaiyun.com/detail/u013897264/7039547

源码来自:https://pan.quark.cn/s/a3a3fbe70177 AppBrowser(Application属性查看器,不需要越狱! ! ! ) 不需要越狱,调用私有方法 --- 获取完整的已安装应用列表、打开和删除应用操作、应用运行时相关信息的查看。 支持iOS10.X 注意 目前AppBrowser不支持iOS11应用查看, 由于iOS11目前还处在Beta版, 系统API还没有稳定下来。 等到Private Header更新了iOS11版本,我也会进行更新。 功能 [x] 已安装的应用列表 [x] 应用的详情界面 (打开应用,删除应用,应用的相关信息展示) [x] 应用运行时信息展示(LSApplicationProxy) [ ] 定制喜欢的字段,展示在应用详情界面 介绍 所有已安装应用列表(应用icon+应用名) 为了提供思路,这里只用伪代码,具体的私有代码调用请查看: 获取应用实例: 获取应用名和应用的icon: 应用列表界面展示: 应用列表 应用运行时详情 打开应用: 卸载应用: 获取info.plist文件: 应用运行时详情界面展示: 应用运行时详情 右上角,从左往右第一个按钮用来打开应用;第二个按钮用来卸载这个应用 INFO按钮用来解析并显示出对应的LSApplicationProxy类 树形展示LSApplicationProxy类 通过算法,将LSApplicationProxy类,转换成了字典。 转换规则是:属性名为key,属性值为value,如果value是一个可解析的类(除了NSString,NSNumber...等等)或者是个数组或字典,则继续递归解析。 并且会找到superClass的属性并解析,superClass如...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值