运行时版本: | AIR 1.0 Flash Player 9 |
URLStream 类提供对下载 URL 的低级访问。数据一下载,便可随即为应用程序使用,这和使用 URLLoader 时需要等到整个文件下载完不同。并且 URLStream 类还允许在完成下载前关闭流。已下载文件的内容将作为原始二进制数据提供。
在 URLStream 中的读取操作是非阻塞模式的。这意味着您在读取数据之前必须使用 bytesAvailable
属性来确定是否能够获得足够的数据。如果不能获得足够的数据,将引发 EOFError
异常。
在默认情况下,所有二进制数据都是以 Big-endian 格式编码的,并且最高位字节于第一位。
适用于通过 URLStream 类进行 URL 下载的安全规则与适用于 URLLoader 对象的规则相同。如有需要也可以下载策略文件。将强制执行本地文件安全规则,并根据需要发出安全警告。
查看示例
bytesAvailable:uint
[只读 (read-only)]
运行时版本: | AIR 1.0 Flash Player 9 |
返回可在输入缓冲区中读取的数据的字节数。您的代码必须调用 bytesAvailable
属性,以确保尝试使用其中一种 read
方法读取前有足够可用的数据。
实现 public function get bytesAvailable():uint
connected:Boolean
[只读 (read-only)]
运行时版本: | AIR 1.0 Flash Player 9 |
指示此 URLStream 对象目前是否已连接。如果已连接 URLStream 对象,则调用该属性会返回值 true
,否则会返回值 false
。
实现 public function get connected():Boolean
endian:String
[读写]
运行时版本: | AIR 1.0 Flash Player 9 |
指示数据的字节顺序。可能的值为 Endian.BIG_ENDIAN
或 Endian.LITTLE_ENDIAN
。
默认值为 Endian.BIG_ENDIAN.
实现 public function get endian():String
public function set endian(value:String):void
另请参见
objectEncoding:uint
[读写]
运行时版本: | AIR 1.0 Flash Player 9 |
在写入或读取对象时,控制所使用的 Action Message Format (AMF) 的版本。
实现 public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
另请参见
public function close():void
运行时版本: | AIR 1.0 Flash Player 9 |
立即关闭该流并取消下载操作。无法在调用 close()
方法后从该流中读取数据。
引发 public function load(request:URLRequest):void
运行时版本: | AIR 1.0 Flash Player 9 |
开始下载 request
参数中指定的 URL。
注意:如果要加载的文件包含非 ASCII 字符(在许多非英语的语言中出现),则建议使用 UTF-8 或 UTF-16 编码(而不是 ASCII 等非 Unicode 格式)来保存文件。
如果加载操作很快失败,将引发描述失败情况的 IOError 或 SecurityError(包括本地文件安全错误)异常。否则,如果 URL 下载开始成功下载,将调度 open
事件;如果发生错误,将调度错误事件。
默认情况下,执行调用的 SWF 文件和加载的 URL 必须在同一域中。例如,位于 www.adobe.com 的 SWF 文件只能从同样位于 www.adobe.com 的源中加载数据。若要从不同的域中加载数据,请在承载数据的服务器上放置一个 URL 策略文件。
在 Flash Player 中,无法连接到常用的保留端口。有关被阻止端口的完整列表,请参阅《ActionScript 3.0 编程》一书的中的“限制网络 API”。
在 Flash Player 中,可以通过在包含 SWF 内容的 HTML 页中设置 object
和 embed
标签的 allowNetworking
参数来禁止 SWF 文件使用此方法。
在 Flash Player 10 和更高版本中以及在 AIR 1.5 和更高版本中,如果使用包含上载(由 POST 正文内“content-disposition”标头中的“filename”参数所指)的 multipart Content-Type(例如“multipart/form-data”),则 POST 操作受应用于上载的安全规则的约束:
- 必须执行 POST 操作以响应用户启动的操作(如鼠标单击或按键)。
- 如果 POST 操作是跨域的(POST 目标与发送 POST 请求的 SWF 文件不在同一台服务器上),则目标服务器必须提供一个允许跨域访问的 URL 策略文件。
另外,对于任何 multipart Content-Type,语法必须有效(根据 RFC2046 标准)。如果语法无效,则 POST 操作受应用于上载的安全规则约束。
这些规则同样适用于非应用程序沙箱中的 AIR 内容。但在 Adobe AIR 中,应用程序沙箱中的内容(随 AIR 应用程序安装的内容)不受这些安全限制的约束。
有关安全性的详细信息,请参阅以下部分:
-
Flash Player 开发人员中心主题:安全性
-
Developing AIR Applications(《开发 AIR 应用程序》)一书的“Getting started with Adobe AIR”(Adobe AIR 入门)一章中的“Understanding AIR Security”(了解 AIR 安全性)一节。
在 AIR 中,URLRequest 对象可以注册 httpResponse
状态事件。与 httpStatus
事件不同,httpResponseStatus
事件在传送任何响应数据之前传送。此外,httpResponseStatus
事件还包括 responseHeaders
和 responseURL
属性的值(对于 httpStatus
,这些属性未定义)。请注意,在发送任何 complete
或 error
事件之前还将发送 httpResponseStatus
(如果有)。
如果有 httpResponseStatus
事件侦听器,则始终 将发送响应消息的正文;而 HTTP 状态代码响应始终将产生 complete
事件。无论 HTTP 响应状态代码指示成功还是错误,这种情况都适用。
在 AIR 中,如果没有 httpResponseStatus
事件侦听器,则根据 SWF AIR 的版本,行为会有所不同:
-
适用于 SWF 9 内容 在应用程序描述符指定 AIR 1.0 或 1.1 作为运行时版本的 AIR 文件中,只有 在 HTTP 响应状态代码指示成功时才会发送 HTTP 响应消息的正文。否则(如果有错误),将不发送正文,且 URLRequest 对象将调度一个 IOError 事件。
-
适用于 SWF 10 内容 在应用程序描述符指定 AIR 1.5 作为运行时版本的 AIR 文件中,将始终 发送 HTTP 响应消息的正文。如果有错误,则 URLRequest 对象将调度一个 IOError 事件。
参数
| request:URLRequest —
一个 URLRequest 对象,指定要下载的 URL。如果此参数的值或所传递的 URLRequest 对象的 URLRequest.url 属性为 null ,则应用程序会引发空指针错误。
|
事件 | complete:Event — 在成功加载数据后调度。如果有 httpResponseStatus 事件侦听器,则 URLRequest 对象还会调度一个 complete 事件,无论 HTTP 响应状态代码指示成功还是 错误。 |
|
| httpStatus:HTTPStatusEvent — 如果通过 HTTP 进行访问,并且当前环境支持获取状态代码,则除了 complete 或 error 事件之外,还可以接收这些事件。 |
|
| httpResponseStatus:HTTPStatusEvent — 在 load() 方法调用尝试通过 HTTP 访问数据,并且 Adobe AIR 可以检测并返回请求的状态代码时调度。 |
|
| ioError:IOErrorEvent — 无法完成加载操作。 |
|
| open:Event — 在加载操作开始时调度。 |
|
| securityError:SecurityErrorEvent — 加载操作尝试从调用方安全沙箱外部的服务器检索数据。可以通过在服务器上使用策略文件来解决此问题。 |
引发 | ArgumentError —
URLRequest.requestHeader 对象不能包含某些被禁用的 HTTP 请求标头。有关详细信息,请参阅 URLRequestHeader 类的描述。
|
|
| MemoryError —
此错误可能由以下原因引起:
-
Flash Player 或 Adobe AIR 无法将
URLRequest.data 参数从 UTF8 转换为 MBCS。若传递给 load() 的 URLRequest 对象设置为执行 GET 操作并且 System.useCodePage 设置为 true ,就会发生该错误。
-
Flash Player 或 Adobe AIR 无法为
POST 数据分配内存。如果传递给 load 的 URLRequest 对象设置为执行 POST 操作,将发生该错误。
|
|
| SecurityError — 本地不受信任的 SWF 文件可能无法与 Internet 进行通信。可通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来解决此问题。 |
|
| SecurityError —
如果尝试连接到常用的保留端口。有关已阻止的端口的完整列表,请参阅《ActionScript 3.0 编程》一书的“安全性”一章中的“限制网络 API”。
|
另请参见
public function readBoolean():Boolean
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个布尔值。读取单个字节,如果字节非零,则返回 true
,否则返回 false
。
返回 | Boolean —
如果字节不为零,则返回 True ;否则返回 false 。
|
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readByte():int
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个带符号字节。
返回值在 -128...127 之间。
返回引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取 length
字节的数据。这些字节会被读取到由 bytes
指定的 ByteArray 对象中,其起始位置是在 ByteArray 对象中偏移 offset
字节处。
参数
| bytes:ByteArray — 要将数据读入的 ByteArray 对象。 |
|
| offset:uint (default = 0 ) —
在 bytes 中的偏移量,即数据读取的起始位置。默认值为 0。
|
|
| length:uint (default = 0 ) — 要读取的字节数。默认值 0 将导致读取所有可用的数据。 |
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readDouble():Number
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个 IEEE 754 双精度浮点数。
返回 | Number — 流中的一个 IEEE 754 双精度浮点数。 |
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readFloat():Number
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个 IEEE 754 单精度浮点数。
返回 | Number — 流中的一个 IEEE 754 单精度浮点数。 |
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readInt():int
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个带符号的 32 位整数。
返回值在 -2147483648...2147483647 之间。
返回 | int — 值的范围为 -2147483648...2147483647。 |
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readMultiByte(length:uint, charSet:String):String
运行时版本: | AIR 1.0 Flash Player 9 |
使用指定的字符集从字节流中读取指定长度的多字节字符串。
参数
| length:uint — 要从字节流中读取的字节数。 |
|
| charSet:String —
表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift_jis" 、"CN-GB" 、"iso-8859-1" ”等。有关完整列表,请参阅Supported Character Sets。
注意:如果当前系统无法识别 charSet 参数的值,则应用程序将使用系统的默认代码页作为字符集。例如,charSet 参数的值(如在使用 01 而不是 1 的 myTest.readMultiByte(22, "iso-8859-01") 中)可能在您的开发计算机上起作用,但在其它计算机上可能不起作用。在其他计算机上,应用程序将使用系统的默认代码页。
|
返回引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
public function readObject():*
运行时版本: | AIR 1.0 Flash Player 9 |
从以 Action Message Format (AMF) 编码的套接字读取一个对象。
返回引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
另请参见
public function readShort():int
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个带符号的 16 位整数。
返回值在 -32768...32767 之间。
返回 | int — 值的范围为 -32768...32767。 |
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readUnsignedByte():uint
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个无符号字节。
返回值在 0...255 之间。
返回引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readUnsignedInt():uint
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个无符号的 32 位整数。
返回值在 0...4294967295 之间。
返回 | uint — 值的范围为 0...4294967295。 |
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readUnsignedShort():uint
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个无符号的 16 位整数。
返回值在 0...65535 之间。
返回引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readUTF():String
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取一个 UTF-8 字符串。假定字符串的前缀是无符号的短整型(以字节表示长度)。
返回引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
public function readUTFBytes(length:uint):String
运行时版本: | AIR 1.0 Flash Player 9 |
从该流读取长度为 length
的 UTF-8 字节序列,并返回一个字符串。
参数
| length:uint — 一个 UTF-8 字节序列。 |
返回 | String — 由指定长度字符的字节表示形式生成的 UTF-8 字符串。 |
引发 | EOFError —
可读取的数据不足。若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。 此错误适用于 SWF 内容,AIR 中运行的 JavaScript 代码中不会发生此错误。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。 |
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.COMPLETE
运行时版本: | AIR 1.0 Flash Player 9 |
成功加载数据后调度。
Event.COMPLETE
常量定义
complete
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
---|
bubbles
|
false
|
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target
| 已完成加载的网络对象。 |
事件对象类型: flash.events.HTTPStatusEvent
属性 HTTPStatusEvent.type = flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS
在 URLStream.load()
方法调用尝试通过 HTTP 访问数据,并且 Adobe AIR 可以检测并返回请求的状态代码时调度。
如果为 httpStatusEvent
事件注册了 URLStream 对象,则在传输错误响应时会将其视为内容。因此,在将错误数据加载到 URLStream 中时,URLStream 将调度 progress
和 complete
事件,而不调度 ioError
事件。
与
httpStatus
事件不同,
httpResponseStatus
事件在传送任何响应数据之前传送。此外,
httpResponseStatus
事件还包括
responseHeaders
和
responseURL
属性的值(对于
httpStatus
,这些属性未定义)。请注意,在发送任何
complete
或
error
事件之前还将发送
httpResponseStatus
(如果有)。
HTTPStatusEvent.HTTP_RESPONSE_STATUS
常量定义 httpResponseStatus
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|
bubbles
|
false
|
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
responseURL
| 从中返回响应的 URL。 |
responseHeaders
| 响应以 URLRequestHeader 对象的数组形式返回的响应标头。 |
status
| 由服务器返回的 HTTP 状态代码。 |
target
| 接收 HTTP 状态代码的网络对象。 |
另请参见
事件对象类型: flash.events.HTTPStatusEvent
属性 HTTPStatusEvent.type = flash.events.HTTPStatusEvent.HTTP_STATUS
运行时版本: | AIR 1.0 Flash Player 9 |
在 URLStream.load()
调用尝试通过 HTTP 访问数据,并且 Flash Player 或 Adobe AIR 可以检测并返回请求的状态代码时调度。(有些浏览器环境可能无法提供此信息。) 请注意,在发送任何 complete
或 error
事件之前还将发送 httpStatus
(如果有)。
HTTPStatusEvent.HTTP_STATUS
常量定义
httpStatus
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
---|
bubbles
|
false
|
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
status
| 由服务器返回的 HTTP 状态代码。 |
target
| 接收 HTTP 状态代码的网络对象。 |
另请参见
事件对象类型: flash.events.IOErrorEvent
属性 IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR
运行时版本: | AIR 1.0 Flash Player 9 |
在出现输入/输出错误并由此导致加载操作失败时调度。
定义
ioError
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
---|
bubbles
|
false
|
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
errorID
| 与特定错误关联的引用编号(仅限 AIR)。 |
target
| 发生输入/输出错误的网络对象。 |
text
| 要显示为错误消息的文本。 |
另请参见
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.OPEN
运行时版本: | AIR 1.0 Flash Player 9 |
在加载操作开始时调度。
Event.OPEN
常量用于定义
open
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
---|
bubbles
|
false
|
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target
| 已打开连接的网络对象。 |
另请参见
事件对象类型: flash.events.ProgressEvent
属性 ProgressEvent.type = flash.events.ProgressEvent.PROGRESS
运行时版本: | AIR 1.0 Flash Player 9 |
在下载操作过程中收到数据时调度。可以使用 URLStream 类方法立即读取已接收的数据。
定义
progress
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
---|
bubbles
|
false
|
bytesLoaded
| 在侦听器处理事件时加载的项数或字节数。 |
bytesTotal
| 如果加载进程成功,最终将加载的项目或字节总数。 |
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target
| 报告进度的 对象。 |
另请参见
事件对象类型: flash.events.SecurityErrorEvent
属性 SecurityErrorEvent.type = flash.events.SecurityErrorEvent.SECURITY_ERROR
运行时版本: | AIR 1.0 Flash Player 9 |
若对 URLStream.load()
的调用尝试从安全沙箱外部的服务器加载数据,则进行调度。
SecurityErrorEvent.SECURITY_ERROR
常量定义
securityError
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
---|
bubbles
|
false
|
cancelable
|
false ;没有要取消的默认行为。
|
currentTarget
| 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target
| 报告安全错误的网络对象。 |
text
| 要显示为错误消息的文本。 |
另请参见
下例加载一个 SWF 文件,并解析其标头的开始部分以指明压缩和版本号信息。
若要运行该示例,则在与 SWF 文件相同的目录中放置一个名为 URLStreamExample.swf 的文件。
package {
import flash.display.Sprite;
import flash.errors.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.net.URLStream;
public class URLStreamExample extends Sprite {
private static const ZLIB_CODE:String = "CWS";
private var stream:URLStream;
public function URLStreamExample() {
stream = new URLStream();
var request:URLRequest = new URLRequest("URLStreamExample.swf");
configureListeners(stream);
try {
stream.load(request);
} catch (error:Error) {
trace("Unable to load requested URL.");
}
}
private function configureListeners(dispatcher:EventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
}
private function parseHeader():void {
trace("parseHeader");
trace("isCompressed: " + isCompressed());
trace("version: " + stream.readByte());
}
private function isCompressed():Boolean {
return (stream.readUTFBytes(3) == ZLIB_CODE);
}
private function completeHandler(event:Event):void {
trace("completeHandler: " + event);
parseHeader();
}
private function openHandler(event:Event):void {
trace("openHandler: " + event);
}
private function progressHandler(event:Event):void {
trace("progressHandler: " + event);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
}
}
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Sun Dec 14 2008, 10:39 PM -08:00