Android利用ksoap2方式连接webservice.doc_第1页
Android利用ksoap2方式连接webservice.doc_第2页
Android利用ksoap2方式连接webservice.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用J2SE的ksoap2标准,我也来做一个山寨版本的android连接webservice。因为soap封装的关系,android application在接收到数据后不能够正确的按照J2SE的标准来获取。在运用之前,我们先要引导两个jar进入工程的buildpath这两个jar包都可以在网上查到下载,引导完后再做一项准备工作。弄清楚已发布的webservice的地址,以及封装的方式。比如:1. webservice接口::8080/axis2/services/Manager?wsdl(顺便说明一下,在android当中,不能写localhost,必须写清楚PC机当前的网络IP)2. webservice封装:/axis2都了解了过后,说明已经做好准备了。下面就介绍一下android如何获取webservice封装数据。引入ksoap2中以封装好的类import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.AndroidHttpTransport;在类中定义webservice的接口地址以及解析方式并且定义要调用的webservice中的函数private static final String URL = :8080/axis2/services/Manager?wsdl;private static final String NAMESPACE = /axis2;private static final String METHOD_NAME = GetMyFriends;这个信息我们可以在webservice中查到接下来开始做对webservice请求数据的工作,请求webservice函数以及封装要用的两个参数(userId和password)SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);request.addProperty(userId, 123456);request.addProperty(password, test);之后我们给定义发送数据的信封的封装格式SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11 );发出请求envelope.setOutputSoapObject(request);AndroidHttpTransport aht = new AndroidHttpTransport(URL);aht.call(null, envelope);接着就可以定义一个SoapObject类型的实例去获取我们返回来的数据SoapObject so = (SoapObject) envelope.bodyIn;这里如果是返回来的数据只有一行并且只有一个值,比如验证函数,返回boolean类型的话,操作比较简单,String getReturn= so.getProperty(return);这个getReturn就是你要获取的值。但是如果返回来是多行的值的话,这个方法就不行了,我们必须对返回来的信息做一些解析。我曾试过用J2SE的标准方式来获取,但是会报错,最主要的可能是他的方式在android当中不能使用。所以在这里我用了正则表达式这种方式来进行数据的解析,我们先来看一下他返回的数据的结构是什么情况。GetMyFriendsResponsereturn=FriendsMessagepermitList=anyTypenickName=我爱罗; singnature=null; userId=2; ; permitList=anyTypenickName=jack; singnature=null; userId=1004; ; permitList=anyTypenickName=admin; singnature=leo_admin; userId=1001; ;简单看他很想Json结构,但是确不是。就目前的解决方式,我只是通过规律来进行了正则表达式的解析:如解析上面的内容。/首先取得permitList(好友)的个数String testPattern = permitList;int resultlength = result.length();cresult = cresult.replace(testPattern, );int lastlength = (resultlength - cresult.length() / testPattern.length();/取得每个permitList中的值。String LoginReturn=, pattern=nickName=.*?;s*singnature=.*?;s*userId=.*?;/动态生成String 数组,存储每个好友的信息String GetFinalReturn = new Stringlastlength;for (int i=0;ilastlength;i+)LoginReturn = result.replaceFirst(.*(+pattern+).*$, $1);GetFinalReturni = LoginReturn;result = result.replace(LoginReturn,);这个数组里面存储的格式就是nickName=admin; singnature=leo_admin; userId=1001;这样以来,我们可以根据=和;两个符号之间做split操作就可以得到数据。好了,到此连接webserv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论