ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:419.99KB ,
资源ID:8911829      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8911829.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Android与服务器端数据交互(基于SOAP协议整合android+webservice)_.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Android与服务器端数据交互(基于SOAP协议整合android+webservice)_.docx

1、Android与服务器端数据交互(基于SOAP协议整合android+webservice) 上一节中我们通过http协议,采用HttpClient向服务器端action请求数据。当然调用服务器端方法获取数据并不止这一种。WebService也可以为我们提供所需数据, 那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起。   我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android

2、手机客户端,做过JAVA ME的人都知道有KSOAP这个第三方的类库,可以帮助我们获取服务器端webService调用,当然KSOAP已经提供了基于android版本的jar包了,那么我们就开始吧: 首先下载KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包 然后新建android项目:并把下载的KSOAP包放在android项目的lib目录下:右键->build path->configure build path--选择Libraries,如图: 以下分为七个步骤来调用WebService方法: 第一

3、实例化SoapObject 对象,指定webService的命名空间(从相关WSDL文档中可以查看命名空间),以及调用方法名称。如: View Code //命名空间 private static final String serviceNameSpace="http://WebX //调用方法(获得支持的城市) private static final String getSupportCity="getSupportCity"; //实例化SoapObject对象 SoapObject request=new SoapObjec

4、t(serviceNameSpace, getSupportCity); 第二步:假设方法有参数的话,设置调用方法参数 request.addProperty("参数名称","参数值"); 第三步:设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致): View Code //获得序列化的Envelope SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.body

5、Out=request; 第四步:注册Envelope, (new MarshalBase64()).register(envelope); 第五步:构建传输对象,并指明WSDL文档URL: View Code //请求URL private static final String serviceURL=" //Android传输对象 AndroidHttpTransport transport=new AndroidHttpTransport(serviceURL); transport.debug=true; 第六步:调用We

6、bService(其中参数为1:命名空间+方法名称,2:Envelope对象): View Code transport.call(serviceNameSpace+getWeatherbyCityName, envelope); 第七步:解析返回数据: View Code if(envelope.getResponse()!=null){ return parse(envelope.bodyIn.toString()); } /************** * 解析XML * @param

7、 str * @return */ private static List parse(String str){ String temp; List list=new ArrayList(); if(str!=null && str.length()>0){ int start=str.indexOf("string"); int end=str.lastIndexOf(";");

8、temp=str.substring(start, end-3); String []test=temp.split(";"); for(int i=0;i

9、 } int index=temp.indexOf(","); list.add(temp.substring(0, index)); } } return list; } 这样就成功啦。那么现在我们就来测试下吧,这里有个地址提供webService天气预报的服务的,我这里只提供获取城市列表: View Code //命名空间 private static final String serviceNameSpace="h

10、ttp://WebX //请求URL private static final String serviceURL=" //调用方法(获得支持的城市) private static final String getSupportCity="getSupportCity"; //调用城市的方法(需要带参数) private static final String getWeatherbyCityName="getWeatherbyCityName"; //调用省或者直辖市的方法(获得支持的省份或直辖市) privat

11、e static final String getSupportProvince="getSupportProvince";  然后你可以在浏览器中输入地址(WSDL):serviceURL,你会看到一些可供调用的方法:  我们选择获取国内外主要城市或者省份的方法吧:getSupportProvice,然后调用,你会发现浏览器返回给我们的是xml文档: View Code -

17、 private static final String getWeatherbyCityName="getWeatherbyCityName"; /******** * 获得州,国内外省份和城市信息 * @return */ public List getProvince(){ List provinces=new ArrayList(); String str=""; SoapObject soapObject=new S

18、oapObject(targetNameSpace,getSupportProvince); //request.addProperty("参数", "参数值");调用的方法参数与参数值(根据具体需要可选可不选) SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=true; envelope.setOutputSoapObject(soapObject

19、);//envelope.bodyOut=request; AndroidHttpTransport httpTranstation=new AndroidHttpTransport(WSDL); //或者HttpTransportSE httpTranstation=new HttpTransportSE(WSDL); try { httpTranstation.call(targetNameSpace+getSupportProvince, e

20、nvelope); SoapObject result=(SoapObject)envelope.getResponse(); //下面对结果进行解析,结构类似json对象 //str=(String) result.getProperty(6).toString(); int count=result.getPropertyCount(); for(int index=0;index

21、 provinces.add(result.getProperty(index).toString()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block

22、 e.printStackTrace(); } return provinces; } /********** * 根据省份或者直辖市获取天气预报所支持的城市集合 * @param province * @return */ public List getCitys(String province){ List citys=new ArrayList(); S

23、oapObject soapObject=new SoapObject(targetNameSpace,getSupportCity); soapObject.addProperty("byProvinceName", province); SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=true; envelope.setOutputSoapObject(soapOb

24、ject); AndroidHttpTransport httpTransport=new AndroidHttpTransport(WSDL); try { httpTransport.call(targetNameSpace+getSupportCity, envelope); SoapObject result=(SoapObject)envelope.getResponse(); int count=result.getPropertyCount();

25、 for(int index=0;index

26、ion e) { // TODO Auto-generated catch block e.printStackTrace(); } return citys; } /*************************** * 根据城市信息获取天气预报信息 * @param city * @return ***************************/ public WeatherBean getWeath

27、erByCity(String city){ WeatherBean bean=new WeatherBean(); SoapObject soapObject=new SoapObject(targetNameSpace,getWeatherbyCityName); soapObject.addProperty("theCityName",city);//调用的方法参数与参数值(根据具体需要可选可不选) SoapSerializationEnvelope envelope=ne

28、w SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=true; envelope.setOutputSoapObject(soapObject);//envelope.bodyOut=request; AndroidHttpTransport httpTranstation=new AndroidHttpTransport(WSDL); //或者HttpTransportSE httpTranstation

29、new HttpTransportSE(WSDL); try { httpTranstation.call(targetNameSpace+getWeatherbyCityName, envelope); SoapObject result=(SoapObject)envelope.getResponse(); //下面对结果进行解析,结构类似json对象 bean=parserWeather(result); } catc

30、h (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bean; } /** * 解析返回的结

31、果 * @param soapObject */ protected WeatherBean parserWeather(SoapObject soapObject){ WeatherBean bean=new WeatherBean(); List> list=new ArrayList>(); Map map=new HashMap

32、tring,Object>(); //城市名 bean.setCityName(soapObject.getProperty(1).toString()); //城市简介 bean.setCityDescription(soapObject.getProperty(soapObject.getPropertyCount()-1).toString()); //天气实况+建议 bean.setLiveWeather(soapObject.getProperty(10).

33、toString()+"\n"+soapObject.getProperty(11).toString()); //其他数据 //日期, String date=soapObject.getProperty(6).toString(); //--------------------------------------------------- String weatherToday="今天:" + date.split(" ")[0]; weatherToday+

34、"\n天气:"+ date.split(" ")[1]; weatherToday+="\n气温:"+soapObject.getProperty(5).toString(); weatherToday+="\n风力:"+soapObject.getProperty(7).toString(); weatherToday+="\n"; List icons=new ArrayList(); icons.add(parseIcon(so

35、apObject.getProperty(8).toString())); icons.add(parseIcon(soapObject.getProperty(9).toString())); map.put("weatherDay", weatherToday); map.put("icons",icons); list.add(map); //------------------------------

36、 map=new HashMap(); date=soapObject.getProperty(13).toString(); String weatherTomorrow="明天:" + date.split(" ")[0]; weatherTomorrow+="\n天气:"+ date.split(" ")[1]; weatherTomorrow+="\n气温:"+soapObject.getProperty(12).toSt

37、ring(); weatherTomorrow+="\n风力:"+soapObject.getProperty(14).toString(); weatherTomorrow+="\n"; icons=new ArrayList(); icons.add(parseIcon(soapObject.getProperty(15).toString())); icons.add(parseIcon(soapObject.getProper

38、ty(16).toString())); map.put("weatherDay", weatherTomorrow); map.put("icons",icons); list.add(map); //-------------------------------------------------------------- map=new HashMap(); date=soapObject.getPropert

39、y(18).toString(); String weatherAfterTomorrow="后天:" + date.split(" ")[0]; weatherAfterTomorrow+="\n天气:"+ date.split(" ")[1]; weatherAfterTomorrow+="\n气温:"+soapObject.getProperty(17).toString(); weatherAfterTomorrow+="\n风力:"+soapObject.getProperty(19).toString()

40、 weatherAfterTomorrow+="\n"; icons=new ArrayList(); icons.add(parseIcon(soapObject.getProperty(20).toString())); icons.add(parseIcon(soapObject.getProperty(21).toString())); map.put("weatherDay", weatherAfterTomorrow);

41、 map.put("icons",icons); list.add(map); //-------------------------------------------------------------- bean.setList(list); return bean; } //解析图标字符串 private int parseIcon(String data){ // 0.gif,返回名称0, i

42、nt resID=32; String result=data.substring(0, data.length()-4).trim(); // String []icon=data.split("."); // String result=icon[0].trim(); // Log.e("this is the icon", result.trim()); if(!result.equals("nothing")){ re

43、sID=Integer.parseInt(result.trim()); } return resID; //return ("a_"+data).split(".")[0]; } } 以及帮助类: View Code public class WebServiceUtil { //命名空间 private static final String serviceNameSpace="http://WebX //请求URL private static fi

44、nal String serviceURL=" //调用方法(获得支持的城市) private static final String getSupportCity="getSupportCity"; //调用城市的方法(需要带参数) private static final String getWeatherbyCityName="getWeatherbyCityName"; //调用省或者直辖市的方法(获得支持的省份或直辖市) private static final String getSupportProvince="getS

45、upportProvince"; /************* * @return城市列表 *************/ public static List getCityList(){ //实例化SoapObject对象 SoapObject request=new SoapObject(serviceNameSpace, getSupportCity); //获得序列化的Envelope SoapSerializationEnvelope en

46、velope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut=request; (new MarshalBase64()).register(envelope); //Android传输对象 AndroidHttpTransport transport=new AndroidHttpTransport(serviceURL); transport.debug=true; //调用

47、 try { transport.call(serviceNameSpace+getWeatherbyCityName, envelope); if(envelope.getResponse()!=null){ return parse(envelope.bodyIn.toString()); } } catch (IOException e) { // TODO Auto-generated c

48、atch block e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static List getProviceList(){ //实例化SoapObject对象 SoapObject request=new SoapObject(serviceNameSpace, getSupportProvince); //获得序列化的Envelope SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut=request; (new MarshalBas

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服