AS3.0 与 服务器 通信
来源:互联网 发布:弹性刚度矩阵 编辑:程序博客网 时间:2024/06/08 13:44
在 AS3 中, 有关于网络操作的内置类全部在 flash.net 里.
URLLoader : 用于从网络或者本地读取文件, 可以通过设置他的 dataFormat 属性改变收到的文本类型.
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);
下面是 URLLoader 支持的事件所对应类的清单:
complete : Event.COMPLETE
httpStatus : HTTPStatusEvent.HTTP_STATUS
ioError : IOErrorEvent.IO_ERROR
open : Event.OPEN
progress : ProgressEvent.PROGRESS
securityError : SecurityErrorEvent.SECURITY_ERROR
1. 单纯的读取服务器或者硬盘上同目录下叫 Variables.txt 文本文件, 文本的内容是:
user1=Kakera&user2=Eigo&user3=Keiragoimport flash.net.URLLoader;import flash.net.URLRequest;import flash.net.URLLoaderDataFormat;import flash.net.URLVariables;import flash.events.Event;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 (erogressEvent):void {trace("rogressEvent.PROGRESS");trace("读取了的字节 : " + loader.bytesLoaded);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.flaimport flash.net.URLLoader;import flash.net.URLRequest;import flash.net.URLLoaderDataFormat;import flash.net.URLVariables;import flash.events.Event;import flash.events.HTTPStatusEvent;import flash.events.IOErrorEvent;import flash.events.ProgressEvent;import flash.events.SecurityErrorEvent;//// 配置 URLVariables, 设置传递到服务器的数据//var variables:URLVariables = new URLVariables();variables.userName = "Kakera";variables.password = "********";//// 配置 URLRequest, 设置目标路径, 设置提交的数据, 方法 (POST / GET)//var request:URLRequest = new URLRequest("http://localhost/urlloadersample/ServerSide.asp");request.data = variables;request.method = URLRequestMethod.POST;//// 配置 URLLoader, 注册侦听器等//var loader:URLLoader = new URLLoader();//// 服务端将要返回的是纯文本数据//loader.dataFormat = URLLoaderDataFormat.TEXT;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("目标文件的原始数据 (纯文本) : \n" + loader.data);}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.status);}function loader_progress (erogressEvent):void {trace("rogressEvent.PROGRESS");trace("读取了的字节 : " + loader.bytesLoaded);trace("文件总字节 : " + loader.bytesTotal);}function loader_security (e:SecurityErrorEvent):void {trace("SecurityErrorEvent.SECURITY_ERROR");}function loader_ioError (e:IOErrorEvent):void {trace("IOErrorEvent.IO_ERROR");}
ok!
- AS3.0 与 服务器 通信
- AS3与JS通信
- as3与服务端通信
- as3 与 服务端ASP 通信
- flash as3与amfphp通信
- flash as3与php通信
- as3与C++通信,缩放
- Flash AS3与php通信
- as3与C++通信,缩放
- as3 与js相互通信
- as3与js通信详解
- ZendAMF通信类 AS3与PHP通信
- 【AS3与AS2通信】AVM2 (AS3) to AVM1 (AS2/AS1)
- as3与red5通信---学习一
- as3与red5通信---学习二
- as3与red5通信---学习三
- as3与.net进行socket通信
- Flash/AS3与C++通过socket通信
- android Emulator 4.0以上的打不开
- 儿子上幼儿园了
- 黑马程序员_JavaSE基础10 之 多态 内部类 匿名内部类
- 数据库考点回顾
- IOS学习JSON数据(用自带API)
- AS3.0 与 服务器 通信
- 三级联动
- jQuery学习笔记4
- html页面滚动条设置
- Linux驱动开发学习的一些必要步骤
- 1.Android Lanucher 源码下载
- Oracle 数据库表空间碎片查询和整理
- 正则表达式
- ABAP中常用的Function