AS3 中使用URLRequest 和URLLoader 与服务器交互
发布时间:2020-12-15 04:54:07 所属栏目:百科 来源:网络整理
导读:AS3?中使用?URLLoader?与?URLRequest?取代了先前版本?LoadVars?方法.?初学者可能又会迷糊了. 在现在帮助系统没有完善的情况下?(Flash?9?没有帮助,?Flex?Builder?2?的只有英文),?这里写篇简单的教程,?方便大家往?AS3?过渡. 在?AS3?中,?有关于网络操作的内置类
AS3?中使用?URLLoader?与?URLRequest?取代了先前版本?LoadVars?方法.?初学者可能又会迷糊了.
在现在帮助系统没有完善的情况下?(Flash?9?没有帮助,?Flex?Builder?2?的只有英文),?这里写篇简单的教程,?方便大家往?AS3?过渡. 在?AS3?中,?有关于网络操作的内置类全部在?flash.net?里.?下面是本教程要用到的类的清单?: URLLoader?:?用于从网络或者本地读取文件,?可以通过设置他的?dataFormat?属性改变收到的文本类型. 与?AS2?的?LoadVars?不同的是,?他的默认值?URLLoaderDataFormat.TEXT?即纯文本格式,?所以在读取外部文本变量的时候得修改一下他的?dataFormat?为URLLoaderDataFormat.VARIABLES.?不过在?AS2?中没有该属性,?取代的是contentType?属性. URLRequest?:?用于传递变量到服务器,?以及?URLLoader?要?load?的目标路径.?可以通过设置他的?contentType?属性改变发送到服务器的变量类型,?默认是?application/x-form-urlencoding,?也就是?URLEncode?编码. URLVariables?:?用于配置传递到服务器变量的键?/?值集合,?如user1=Kakera&user2=Eigo. URLLoaderDataFormat?:?用于设置?URLLoader?读取文件的类型,?有?TEXT?(纯文本),?VARIABLES?(URLEncoding?的键?/?值集合),?BINARY?(2?进制格式),?URLLoader?会根据相应的类型进行解码操作,?如解码?URLEncode 同时还有其他不常用的?: URLRequestMethod?:?决定使用哪种方式传递数据到服务器,?POST?或者?GET. URLReqeustHeader?:?用于配置传递到服务端的?HTTP?标头. 值得一提的是,?URLLoader?还有相当完整的事件让我们来获取读取数据的状态,?下面是有关?URLLoader?事件的清单. complete?:?使用?URLLoader.load()?方法后,?数据完全加载完毕时触发,?通常如果能够触发这个事件的话,?说明你的程序没有问题. httpStatus?:?使用?URLLoader.load()?方法后,?获取?HTTP?状态代码时触发,?通过判断他的?state?属性我们可以获得远程文件的加载状态.?成功?(200),?没有权限?(403),?找不到文件?(404),?服务器内部错误?(500)?等等.?这个事件总是在?compelete?之前被触发. ioError?:?使用?URLLoader.load()?方法时,?发生致命错误时触发,?我还没碰到过.. open?:?使用?URLLoader.load()?方法后,?开始从服务器下载数据时触发一次,?此时的?URLLoader.bytesLoaded?一定是?0. progress?:?使用?URLLoader.load()?方法后,?在从服务器下载数据的过程中持续触发,?通过侦听他的变化我们可以很方便的为?URLLoader?做加载状态的显示. securityError?:?FlashPlayer?的安全错误,?比如跨域加载,?从硬盘?(文件系统)?发送?/?读取服务器上的数据. 关于注册侦听器的建议 flashplayer?内置类的所有事件都有相关事件类常量来表示,?推荐使用他们来注册事件侦听器.?而所有的内置类的事件类?(Event)?全部在?flash.events?包中,如使用: import?flash.events.Event; urlLoaderInstance.addEventListener(Event.COMPLETE,?completeHandler); 来代替 urlLoaderInstance.addEventListener("complete",sans-serif; font-size:14px; line-height:28px; text-align:left">下面是?URLLoader?支持的事件所对应类的清单,?他们可以在?Flex?Builder?2?的文档中找到: complete?:?Event.COMPLETE httpStatus?:?HTTPStatusEvent.HTTP_STATUS ioError?:?IOErrorEvent.IO_ERROR open?:?Event.OPEN progress?:?ProgressEvent.PROGRESS securityError?:?SecurityErrorEvent.SECURITY_ERROR 然后下面是使用?URLLoader?的一些简单的例子 1.?单纯的读取服务器或者硬盘上同目录下叫?Variables.txt?文本文件,?文本的内容是: user1=Kakera&user2=Eigo&user3=Keirago LoadVariablesOnly.fla import?flash.net.URLLoader; import?flash.net.URLRequest; import?flash.net.URLLoaderDataFormat; import?flash.net.URLVariables; import?flash.events.HTTPStatusEvent; import?flash.events.IOErrorEvent; import?flash.events.ProgressEvent; import?flash.events.SecurityErrorEvent; // //?配置?URLRequest,?设置目标路径等 var?request:URLRequest?=?new?URLRequest("Variables.txt"); //?配置?URLLoader,?注册侦听器等 var?loader:URLLoader?=?new?URLLoader(); loader.dataFormat?=?URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE,?loader_complete); loader.addEventListener(Event.OPEN,?loader_open); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,?loader_httpStatus); loader.addEventListener(ProgressEvent.PROGRESS,?loader_progress); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,?loader_security); loader.addEventListener(IOErrorEvent.IO_ERROR,?loader_ioError); loader.load(request); function?loader_complete?(e:Event):void?{ trace("Event.COMPLETE"); trace("目标文件的原始数据?(纯文本)?:?"?+?loader.data); //?使用?URLVariables?处理原始数据并进行遍历同时输出数据 var?variables:URLVariables?=?new?URLVariables(loader.data); for?(var?i?in?variables)?{ trace(i?+?"?:?"?+?variables[i]); } function?loader_open?(e:Event):void?{ trace("Event.OPEN"); trace("读取了的字节?:?"?+?loader.bytesLoaded); function?loader_httpStatus?(e:HTTPStatusEvent):void?{ trace("HTTPStatusEvent.HTTP_STATUS"); trace("HTTP?状态代码?:?"?+?e.state); function?loader_progress?(e:ProgressEvent):void?{ trace("ProgressEvent.PROGRESS"); trace("文件总字节?:?"?+?loader.bytesTotal); function?loader_security?(e:SecurityErrorEvent):void?{ trace("SecurityErrorEvent.SECURITY_ERROR"); function?loader_ioError?(e:IOErrorEvent):void?{ trace("IOErrorEvent.IO_ERROR"); 2.?提交数据到?ServerSide.asp,?并输出服务器的返回值 ServerSide.asp <%@LANGUAGE="JSCRIPT"?CODEPAGE="65001"%> <% //? //?全局?Header,?设置编码,?以及缓存 with?(Response)?{ Charset?=?"utf-8"; Buffer?=?true; Expires?=?-10; ContentType?=?"text/plain"; var?buffer?=?"列出所有服务端接收到的变量?:?n"; var?i; var?e?=?new?Enumerator(Request.Form); //?遍历集合 for?(;?!e.atEnd();?e.moveNext())?{ i?=?e.item(); buffer?+=?String(i)?+?"?:?"?+?String(Request.Form(i))?+?"n"; Response.Write(buffer); %> SendAndLoadVariables.fla //?配置?URLVariables,?设置传递到服务器的数据 var?variables:URLVariables?=?new?URLVariables(); variables.userName?=?"Kakera"; variables.password?=?"********"; var?request:URLRequest?=?new?URLRequest("http://localhost/urlloadersample/ServerSide.asp"); request.data?=?variables; request.method?=?URLRequestMethod.POST; //?服务端将要返回的是纯文本数据 loader.dataFormat?=?URLLoaderDataFormat.TEXT; trace("目标文件的原始数据?(纯文本)?:?n"?+?loader.data); trace("HTTP?状态代码?:?"?+?e.status); 点击下载本教程以及教程的源码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |