已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,简单介绍Flex与Web服务端的交互,-by彭伟林,.,简单介绍信Flex与Web服务的交互,主要内容:1.ActionScript与服务端的基本交互方式(REST).2.ActionScript特有的数据传输格式(AMF)与服务器交互.3.Flex与WebService.,.,要实现ActionScript与服务端交互,首先必须知道以下几个类:URLRequest类记录请求服务端的URL信息,给URLLoader进行发送操作.URLVariables类保存向服务端请求所需的参数,一般用于POST方式传输,GET方式传输不需要使用.URLRequestMethod类该类只有两个静态常量值,一个是POST,一个是GET,可以把它当作是一个枚举类型,用于指定URL请求时使用POST方式或是GET方式.URLLoader类真正与服务端打交道的类,通过load方法把一个Reuqest发送给服务端,在load之前必须给该对象添加一个Complete事件的监听器,接收服务器返回的信息.传输过程中有可能产生IO错误,有必要时可以为该对象添加IOError监听器.,ActionScript与服务端的基本交互方式,.,例子:varrequest:URLRequest=newURLRequest(http:/localhost);/默认为URLRequestMethod.GET,若使用GET方式可以不指定request.method=URLRequestMethod.POST;/创建一个参数变量对象,用于保存所有向服务发送的参数数据,GET方式可以不使用varvars:URLVariables=newURLVariables();varsvarName=varValue;/把参数键,值对放到vars对象中.varsvar2Name=var2Value;request.data=vars;/把参数对象放进Request对象中作为参数/通过request对象创建一个loader,varloader:URLLoader=newURLLoader(request);,ActionScript与服务端的基本交互方式,.,loader.addEventListener(/给loader对象添加完成时的监听器.Event.COMPLETE,function(e:Event):void/临时定义一个监听器/服务端返回的数据是保存在loader的data里,通过以下语句可以得到trace(URLLoader(e.target).data);/在监听器里处理服务端返回的数据/complete/processthedata;);loader.addEventListener(/IOError监听器IOErrorEvent.IO_ERROR,/临时监听器,IO错误的处理在该函数中处理function(e:IOErrorEvent):void/*processtheerr;*/);loader.load(request);/把request对象发送到服务端.当请求完成,则会自动触发COMPLETE事件,ActionScript与服务端的基本交互方式,.,REST实例演示,ActionScript与服务端的基本交互方式,.,通过AMF数据格式与服务器交互,什么是AMF?AMF是Adobe公司制定一套ActionScript与服务端交互的数据格式,Flex本身已经有相关的类可以直接使用,但服务端则需要一个可以解释该格式的包或框架,幸运的时现在已经存在大部分服务端语言解释AMF格式包与类库,所以不用担心处理该格式的问题.,AMF有什么优势?为什么要使用AMF?原因:AMF数据格式采用了二进制数据压缩,然后再把数据放送到服务端进行处理,虽然采用了压缩技术,但并不影响效率,而传统的XML-RPC传输大量的XML标签,大大的影响了传输的速度,且增大传输的流量.AMF则不存在这样的问题.所以AMF主要的优势是采用二进制传输,传输的数据量较少,大大提升交互的速度.,.,怎样在Flex中使用AMF数据格式进行传输?在Flex中使用AMF需要通过以下几个类进行:RemoteObject类,可以作为Flex中的一个控件使用.AsyncToken类,保存一个请求的状态,给请求添加监听器.AsyncResponder类,用于设置请求的两种返回结果,返回成功或失败ResultEvent类,返回成功的事件对象,返回的数据保存在该对象的result属性里.FaultEvent类,返回失败的事件对象,该对象保存请求失败的所有信息.,通过AMF数据格式与服务器交互,.,例子(后台采用django+pyAMF):在Application的MXML文件里创建一个RemoteObject对象Flex编写以下代码:/djangoService是面上创建一个RemoteObject对象,echo是服务端提供的一个无参数方法,用于显示信息.vartoken:AsyncToken=djangoService.echo();/调用服务端的方法后返回一个Token对象/为Token添加成功与失败的监听器.token.addResponder(newAsyncResponder(AfterEchoRet,falutHandler);,通过AMF数据格式与服务器交互,.,/字义成功与失败的监听器.privatefunctionAfterEchoRet(result:ResultEvent):voidtrace(result.result);/在这里处理返回的数据.数据保存于result属性中.privatefunctionfalutHandler(error:FaultEvent):voidtrace(error.message);程序代码就只有这么多,不过还需要一个Services-config.xml配置文件.还需要在工程属性里添加一个参数,设置如下:,通过AMF数据格式与服务器交互,.,services-config.xml内容如下:/需要对应pyAMF服务器上设定的destination值,必须一致/对应下面定义的Channel*/设置服务器终端URL地址,通过AMF数据格式与服务器交互,.,AMF实例演示,通过AMF数据格式与服务器交互,.,Flex与WebService,WSDL(WebServiceDescriptionLanguage)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,通过WSDL,可描述Web服务的三个基本属性:服务做些什么服务所提供的操作(方法)如何访问服务和服务交互的数据格式以及必要协议服务位于何处协议相关的地址,如URLFlex本身就拥有支持WebService的类,常用的是:WebService类,该类已经可以实现对服务端提供的WebService的WSDL数据进行相应的操作.,.,Flexframework包含mx.rpc.soap.WebService,该类可调用webservices方法,首先创建WebService对象,如下:varwebService:WebService=newWebService();每个webservice都有一个Web服务描述语言(WSDL),通过WebService对象的wsdl属性进行定位:webService.wsdl=在调用方法之前,必须先用loadWSDL()方法读取wsdl数据:webService.loadWSDL();loadWSDL()方法是异步调用的,因此需要监听是否WSDL数据已经读取完毕,当数据读取完成时WebService对象会发出mx.rpc.soap.LoadEvent事件,如:webService.addEventListener(LoadEvent.LOAD,onWSDL);当WSDL数据读取后,就可以调用WebService对象方法了,WSDLURL指向真实的webservice,其有个方法叫getAverages():webService.getAverages();,Flex与WebService,.,处理返回结果Webservices方法的类型实际上是mx.rpc.soap.Operation,当webservices方法返回值时,方法对象会发出mx.rpc.events.ResultEvent事件,要想处理这个事件可注册监听器,例如,webService有个方法叫getAverages(),可这样注册监听器:webService.getAverages.addEventListener(ResultEvent.RESULT,onGetAverages);调用写法和其他方法一样:webService.getAverages();当进入处理函数时,会传进来一个ResultEvent参数,ResultEvent类定义了一个叫result的属性,它包含返回值,因为getAverages()方法返回一个关联数组,包含两个属性:flash和actionscript:privatefunctiononGetAverages(event:ResultEvent):voidtextArea.text=TheaveragesforFlashandActionScriptare+event.result.flash+and+event.result.actionscript;,Flex与WebService,.,Flex与WebService,处理异常当webservices引发异常时,方法会发出fault事件,类型为mx.rpc.events.FaultEvent,下面的代码注册了fault事件处理函数:webService.addEventListener(FaultEvent.FAULT,onWebServiceFault);FaultEvent类定义了一个fault属性,类型为mx.rpc.Fault.Fault对象返回有关异常的信息,包含如faultCode,faultDetail,faultString,和rootCause属性,下面的例子用Alert显示异常信息:privateonWebServiceFault(event:FaultEvent):voi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北省定向湖南大学选调生招录历年真题汇编附答案解析
- 2025福建三明沙县区青少年活动中心见习岗招聘1人历年真题汇编附答案解析
- 2025浦发银行广州分行招聘10人备考公基题库附答案解析
- 2025年滨州无棣县财金投资集团有限公司公开招聘高层次人才笔试备考试卷带答案解析
- 2025四川船山公安常驻校专职辅警岗位30人历年真题汇编附答案解析
- 2025江西赣州经开区工业发展投资(集团)有限责任公司见习生招聘2人备考题库带答案解析
- 2026广东广州市中山大学孙逸仙纪念医院人才招聘(第一批)笔试模拟试卷附答案解析
- 2025下半年四川内江市资中县部分事业单位选调60人模拟试卷附答案解析
- 2025四川省公安厅所属事业单位考核招聘工作人员8人参考题库带答案解析
- 备考公基题库附答案解析
- 秸秆手工商业计划书
- 提高手卫生依从性的PDCA课件
- 2025年麻醉临床信息系统项目合作计划书
- 【地】矿产资源 课件-2025-2026学年八年级地理上册人教版
- 国际贸易合同风险防控与纠纷处理
- 人工智能通识 课件 第五章 自然语言处理与大数据
- 围术期镇痛管理
- 上海落户业务培训
- 2026年水利部长江水利委员会事业单位招聘107人(第一批)笔试考试参考试题及答案解析
- 交通运输业税收风险评估
- 小学科学教学实验指导手册
评论
0/150
提交评论