安卓ksoap2获取.net webservice后返回DateSet型的数据的解析方法
来源:互联网 发布:矩阵计算法则 编辑:程序博客网 时间:2024/05/17 23:02
今天闲来没事,一个朋友让我帮忙看看他的项目,大概业务是这样的:
手机客户端调用.net的webservice后返回dataset类型的视频列表信息,解析信息显示在listview中,然后点击某个视频可以下载到手机SD卡上
dateset类型的信息:
anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType{element=anyType{complexType=anyType{sequence=anyType{element=anyType{}; element=anyType{}; element=anyType{}; }; }; }; }; }; }; }; diffgram=anyType{NewDataSet=anyType{Table=anyType{Course_CfName=格兰仕的秘密01.flv; Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密01_200K.flv; cf_id=24267; }; Table=anyType{Course_CfName=格兰仕的秘密02.flv; Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密02_200K.flv; cf_id=24268; }; Table=anyType{Course_CfName=格兰仕的秘密03.flv; Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密03_200K.flv; cf_id=24269; }; Table=anyType{Course_CfName=格兰仕的秘密04.flv; Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密04_200K.flv; cf_id=24270; }; Table=anyType{Course_CfName=格兰仕的秘密05.flv; Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密05_200K.flv; cf_id=24271; }; Table=anyType{Course_CfName=走进蒙牛与牛根生面对面_01.flv; Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_01.flv; cf_id=24301; }; Table=anyType{Course_CfName=走进蒙牛与牛根生面对面_02.flv; Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_02.flv; cf_id=24302; }; }; }; }
相信调用webservice获取服务器信息就不用给大家介绍了吧,一般没有什么难度,只要URL,NAMESPACE,METHOD和需要的参数正确,基本上都可以正常获取到信息,一般我们获取到的都是xml类型的和json类型的,这种类型解析的方法很多,也很普遍,相信网上一查一大堆,但是像我们获取到的这种dataset类型的数据,既不是xml,也不是json,那么该怎么去解析呢,下面就请看代码:
一、封装视频信息的类
film.java
public class Film {/* * Course_CfName=格兰仕的秘密01.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密01_200K.flv; * cf_id=24267; */private String Course_CfName;private String Course_Updir;private String cf_id;public String getCourse_CfName() {return Course_CfName;}public void setCourse_CfName(String courseCfName) {Course_CfName = courseCfName;}public String getCourse_Updir() {return Course_Updir;}public void setCourse_Updir(String courseUpdir) {Course_Updir = courseUpdir;}public String getCf_id() {return cf_id;}public void setCf_id(String cfId) {cf_id = cfId;}}
GetVideoInfoService.java
二、从服务器获取数据并解析封装(重点)
public class GetVideoInfoService {private static final String NAMESPACE ="http://????.org/"; // WebService地址 private static String URL ="http://????.????.????/androidphone/login.asmx?wsdl"; private static final String METHOD_NAME ="getVoides"; private static String SOAP_ACTION ="http://????.org/getVoides";private List<Film> films=new ArrayList<Film>();public List<Film> getVoidesInfo(String uname) {try { //(1) 指定webservice的命名空间和调用的方法名SoapObject rpc =new SoapObject(NAMESPACE, METHOD_NAME); //(2) 设置调用方法的参数值,如果没有参数,可以省略,rpc.addProperty("userName", uname);//3 创建HttpTransportsSE对象。AndroidHttpTransport ht =new AndroidHttpTransport(URL); ht.debug =true; //4 生成调用Webservice方法的SOAP请求信息,//在创建SoapSerializationEnvelope对象后,//不要忘了设置SOAPSoapSerializationEnvelope类的bodyOut属性,//该属性的值就是在第一步创建的SoapObject对象SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut = rpc; envelope.dotNet =true; envelope.setOutputSoapObject(rpc); //(5)使用call方法调用WebService方法ht.call(SOAP_ACTION, envelope); //SoapObject result = (SoapObject) envelope.bodyIn; //Object detail=result.getProperty("getVoidesResult");if (envelope.getResponse() != null) {SoapObject soapObject = (SoapObject) envelope.bodyIn;SoapObject soap1 = (SoapObject) soapObject.getProperty("getVoidesResult");/** * 此时的获取到的信息是: * anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType * {element=anyType{complexType=anyType{sequence=anyType{element=anyType{}; * element=anyType{}; element=anyType{}; }; }; }; }; }; }; }; * diffgram=anyType{NewDataSet=anyType{ * Table=anyType{ * Course_CfName=格兰仕的秘密01.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密01_200K.flv; * cf_id=24267; }; * Table=anyType{ * Course_CfName=格兰仕的秘密02.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密02_200K.flv; * cf_id=24268; }; * Table=anyType{ * Course_CfName=格兰仕的秘密03.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密03_200K.flv; * cf_id=24269; }; * Table=anyType{ * Course_CfName=格兰仕的秘密04.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密04_200K.flv; * cf_id=24270; }; * Table=anyType{ * Course_CfName=格兰仕的秘密05.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密05_200K.flv; * cf_id=24271; }; * Table=anyType{ * Course_CfName=走进蒙牛与牛根生面对面_01.flv; * Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_01.flv; * cf_id=24301; }; * Table=anyType{ * Course_CfName=走进蒙牛与牛根生面对面_02.flv; * Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_02.flv; * cf_id=24302; }; }; }; } */SoapObject soapChilds =(SoapObject)soap1.getProperty(1);/**因为0位置对我们来说没有数据,所以我们去1位置的信息 * anyType{NewDataSet=anyType{ * Table=anyType{ * Course_CfName=格兰仕的秘密01.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密01_200K.flv; * cf_id=24267; }; * Table=anyType{ * Course_CfName=格兰仕的秘密02.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密02_200K.flv; * cf_id=24268; }; * Table=anyType{ * Course_CfName=格兰仕的秘密03.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密03_200K.flv; * cf_id=24269; }; * Table=anyType{ * Course_CfName=格兰仕的秘密04.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密04_200K.flv; * cf_id=24270; }; * Table=anyType{ * Course_CfName=格兰仕的秘密05.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密05_200K.flv; * cf_id=24271; }; * Table=anyType{ * Course_CfName=走进蒙牛与牛根生面对面_01.flv; * Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_01.flv; * cf_id=24301; }; * Table=anyType{ * Course_CfName=走进蒙牛与牛根生面对面_02.flv; * Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_02.flv; * cf_id=24302; }; }; }; } */SoapObject soap2=(SoapObject)soapChilds.getProperty(0);/**去掉了前面的部分anyType{NewDataSet= * anyType{ * Table=anyType{ * Course_CfName=格兰仕的秘密01.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密01_200K.flv; * cf_id=24267; }; * Table=anyType{ * Course_CfName=格兰仕的秘密02.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密02_200K.flv; * cf_id=24268; }; * Table=anyType{ * Course_CfName=格兰仕的秘密03.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密03_200K.flv; * cf_id=24269; }; * Table=anyType{ * Course_CfName=格兰仕的秘密04.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密04_200K.flv; * cf_id=24270; }; * Table=anyType{ * Course_CfName=格兰仕的秘密05.flv; * Course_Updir=webupload/整理课件/2012年5月/格兰仕的秘密\200K\格兰仕的秘密05_200K.flv; * cf_id=24271; }; * Table=anyType{ * Course_CfName=走进蒙牛与牛根生面对面_01.flv; * Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_01.flv; * cf_id=24301; }; * Table=anyType{ * Course_CfName=走进蒙牛与牛根生面对面_02.flv; * Course_Updir=webupload/整理课件/2012年5月/走进蒙牛 与牛根生面对面\200K\走进蒙牛与牛根生面对面_02.flv; * cf_id=24302; }; }; }; } */if(films.size()>0){films.clear();}/** * 里面有7个视频,所以需要我们遍历取出 */for(int i=0;i<soap2.getPropertyCount();i++){SoapObject soap3=(SoapObject) soap2.getProperty(i);//取出每个视频信息Film film=new Film();film.setCourse_CfName(soap3.getProperty("Course_CfName").toString());film.setCourse_Updir("????.????.com/"+soap3.getProperty("Course_Updir").toString());film.setCf_id(soap3.getProperty("cf_id").toString());films.add(film);//封装后存入集合中 }}} catch (Exception e) {e.printStackTrace();}return films;}
三,新建个activity,调用webservice中的方法并遍历显示
GetVideoInfoService videoService=new GetVideoInfoService(); List<Film> list=videoService.getVoidesInfo("test"); for(Film film:list){ System.out.println("视频名称:"+film.getCourse_CfName()); System.out.println("视频路径:"+film.getCourse_Updir()); System.out.println("视频编号:"+film.getCf_id()); System.out.println("=============================================="); }
运行结果:
转载请注明出处
- 安卓ksoap2获取.net webservice后返回DateSet型的数据的解析方法
- android通过ksoap2对webservice的解析
- android端webservice解决方案-Ksoap2获取数据解析
- 通过ksoap2访问.NET Webservice 的数据库
- android 用ksoap2调用webservice的方法
- java webservice使用Ksoap2接收返回的数组
- .net post提交数据获取返回数据的方法
- Java接收Cordys中webservice接口的返回数据并解析xml获取相应节点数据
- android ksoap2调用.net Webservice 方法总结
- 安卓调用WebService(ksoap2)
- asp通过json调用webservice接口,并获取返回的xml数据及解析
- .NET中,修改DateSet.xsd数据集中TableAdapter的超时设置的方法(转自:股海无涯)
- 这个项目是基于webservice的,用ksoap2来解析网络上的WebService的
- 用安卓自带的原生方法解析从webservice获取的json数据
- 用安卓自带的原生方法解析从webservice获取的json数据
- java 访问.net webservice返回的数据集
- java 访问.net webservice返回的数据集
- java 访问.net webservice返回的数据集
- 项目需求和客户交流的心得体会
- windows 添加 path
- opencv CvMat矩阵学习
- Android中Linux睡眠唤醒流程
- 解决MySql连接超时
- 安卓ksoap2获取.net webservice后返回DateSet型的数据的解析方法
- c# Json List<T> DataTable 数据相互转换
- 数学之路(3)-机器学习(3)-机器学习算法-欧氏距离(4)
- AndroidMenifest.xml中minSdkVersion、targetSdkVersion、targetApiLevel的区别
- 远程登陆mysql
- pkginfo、pkgadd和pkgrm命令的用法
- ubuntu下更改分辨率
- [Matlab]科研中的心得(updating)
- linux永久添加新路径