`
wzhelp
  • 浏览: 47524 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

AS3使用URLRequest和URLLoader服务器交互(转载)

阅读更多
AS3使用URLRequest和URLLoader服务器交互(转载)

上一篇 / 下一篇  2007-05-22 10:15:06 / 个人分类:Flash 文章/教程
查看( 466 ) / 评论( 0 ) / 评分( 0 / 0 )
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 包中,如使用:
window.attachEvent("onload",function (){AutoSizeDIV('CODE_7643')}) import flash.events.Event;
urlLoaderInstance.addEventListener(Event.COMPLETE, completeHandler);

来代替
urlLoaderInstance.addEventListener("complete", completeHandler);下面是 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=KeiragoLoadVariablesOnly.fla import 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 (e:ProgressEvent):void {
trace("ProgressEvent.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="Jscrīpt" 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
import 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 (e:ProgressEvent):void {
trace("ProgressEvent.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");

}

分享到:
评论

相关推荐

    AS3 中使用 URLRequest 和 URLLoader 与服务器交互

    AS3 中使用 URLRequest 和 URLLoader 与服务器交互AS3 中使用 URLRequest 和 URLLoader 与服务器交互AS3 中使用 URLRequest 和 URLLoader 与服务器交互AS3 中使用 URLRequest 和 URLLoader 与服务器交互AS3 中使用 ...

    AS3中使用URLRequest和URLLoader 与服务器交互

    在ActionScript 3 (AS3)中,与服务器进行数据交互是Web开发中的核心部分,主要依赖于两个关键类:`URLRequest`和`URLLoader`。这两个类是Flash Player和Adobe AIR应用程序用来发送HTTP请求并接收响应的重要工具。...

    flash 与 asp交互简单实例AS3-ASP.NET

    本文将深入探讨如何使用AS3(ActionScript 3)与ASP.NET(VB)进行交互,通过一个简单的实例来阐述这一过程。 首先,我们需要理解AS3和ASP.NET各自的角色。AS3是Flash Professional或Flex Builder中用于创建动态...

    as3,php和mysql之间的连接及使用数据

    3. **HTTP请求**:AS3还可以使用URLLoader和URLRequest类发送HTTP GET和POST请求到PHP服务器,获取或提交数据。PHP端可以通过解析请求参数来处理这些请求。 **PHP与MySQL的交互** 1. **数据库连接**:PHP使用`...

    AS3跳转url链接

    AS3(ActionScript 3)是Adobe Flash Platform中用于创建交互式内容、动画以及富互联网应用程序的主要编程语言。在AS3中实现跳转URL链接的功能是相当基础且实用的,尤其对于开发网络应用或者游戏中的按钮点击事件...

    Flashas3发送和接收文件

    在Flash AS3中,发送和接收文件是一项关键功能,它允许用户通过Flash应用程序与服务器进行数据交互,例如上传用户文件或获取服务器上的数据。这里我们将深入探讨如何在AS3中实现这一过程,以及如何与ASP和JSP后端...

    as3 chm as3.chm 帮助文档

    9. **网络编程**:通过URLLoader和URLRequest类,AS3可以直接与服务器通信,进行HTTP、HTTPS请求,实现数据的上传和下载。 10. **声音和视频处理**:AS3提供了Sound和Video类,用于播放、处理和合成音频,以及捕获...

    AS3 实现发邮件

    5. **编码和解码**:由于SMTP协议通常要求数据使用Base64编码,所以你可能需要使用AS3的` flash.utils.ByteArray`类进行编码和解码。 6. **错误处理**:SMTP服务器可能会返回各种错误代码,我们需要正确地处理这些...

    Flash AS3 中文帮助文档

    5. **XML和JSON**:AS3提供了XML类用于解析和操作XML数据,同时也支持JSON(JavaScript Object Notation)数据格式,这在与服务器进行数据交换时非常常见。 6. **错误处理**:通过try...catch语句进行异常处理,...

    as3简单的聊天窗体组件

    AS3可以使用Socket或XMLSocket类进行低级TCP通信,或者使用HTTP请求(如URLLoader和URLRequest)与服务器进行RESTful API交互。考虑到组件的简单性,可能使用了HTTP POST/GET请求发送和接收消息。 3. **数据序列化*...

    AS3 JSON 包

    总结,AS3中的JSON处理是通过`JSON.stringify()`和`JSON.parse()`两个核心方法实现的,这些工具使得AS3能够轻松地与其他使用JSON的平台进行数据交互,极大地增强了其在网络通信中的能力。了解和掌握这些基础知识,...

    FLASH AS2 读取asp

    总结来说,"FLASH AS2 读取asp"涉及到的是在Flash环境中使用ActionScript 2.0与ASP服务器进行数据通信的方法,主要利用URLLoader或XMLSocket类。对于初学者,了解这些概念并实践相关示例是掌握这一技术的关键步骤。

    flash as3 php 保存存图片

    在IT行业中,将Flash AS3生成的图片保存到服务器通常涉及到客户端与服务器之间的交互,这里主要涉及的技术点包括Flash ActionScript 3 (AS3)、PHP以及文件上传处理。下面我们将详细探讨这些知识点。 首先,Flash AS...

    flash as3+php留言板

    1. AS3简介:AS3是Flash Professional和Flex Builder等工具中使用的编程语言,它引入了强类型、面向对象的特性,提高了代码的可维护性和性能。 2. 数据发送:在AS3中,我们可以使用URLLoader类来发送HTTP请求,如...

    java 加密解密压缩包zip代码-as3

    在AS3中,你可以使用`URLLoader`和`URLRequest`类发送HTTP请求到Java服务器,请求加密或解密ZIP文件的服务。收到服务器返回的加密或解密后的ZIP数据后,可以使用AS3的`ByteArray`类进行进一步处理,如保存到本地或...

    as3下载源码

    总之,AS3下载源码是AS3编程中关于网络通信和文件操作的重要部分,它结合URLLoader、URLRequest和FileReference等类,实现了从服务器下载文件并保存到本地的功能。开发者可以借此学习和实践,提升自己在网络编程和富...

    解决flash/flex/as3 访问中文域名时的流错误示例

    在开发基于Flash、Flex或ActionScript 3 (AS3) 的应用程序时,有时我们需要与服务器进行交互,这可能涉及到访问包含中文字符的域名。然而,由于Unicode编码的问题,尝试访问这样的域名可能会导致流错误(Stream ...

    AS3 中文教程(最新教程)

    11. **网络通信**:通过URLLoader和URLRequest对象,可以进行HTTP、FTP请求,实现与服务器的数据交换,如加载XML或JSON数据。 12. **声音和视频处理**:AS3提供Sound和Video类,用于播放、操作音频和视频文件,实现...

    flash as3中文API

    5. **网络通信**:URLLoader和URLRequest类提供了与服务器进行HTTP通信的能力,XML和JSON解析器则方便了数据交换。 6. **组件库**:Flex 4.0包含了一系列可重用的UI组件,如Button、Label、TextInput等,Spark组件...

Global site tag (gtag.js) - Google Analytics