Player 版本 : | Flash Player 9 |
URLStream 类提供对下载 URL 的低级访问。 数据一下载,便可随即为 ActionScript 使用,这和使用 URLLoader 时需要等到整个文件下载完不同。 并且 URLStream 类还允许在完成下载前关闭流。 已下载文件的内容将作为原始二进制数据提供。
在 URLStream 中的读取操作是非阻塞模式的。 这意味着您在读取数据之前必须使用 bytesAvailable
属性来确定是否能够获得足够的数据。 如果不能获得足够的数据,将引发 EOFError
异常。
在默认情况下,所有二进制数据都是以 Big-endian 格式编码的,并且最高位字节于第一位。
适用于通过 URLStream 类进行 URL 下载的安全规则与适用于 URLLoader 对象的规则相同。 如有需要也可以下载策略文件。 将强制执行本地文件安全规则,并根据需要发出安全警告。
查看示例
bytesAvailable:uint
[read-only]
Player 版本 : | Flash Player 9 |
返回可在输入缓冲区中读取的数据的字节数。 您的代码必须调用 bytesAvailable
属性,以确保尝试使用其中一种 read
方法读取前有足够可用的数据。
实现
public function get bytesAvailable():uint
connected:Boolean
[read-only]
Player 版本 : | Flash Player 9 |
指示此 URLStream 对象目前是否已连接。 如果已连接 URLStream 对象,则调用该属性会返回值 true
,否则会返回值 false
。
实现
public function get connected():Boolean
endian:String
[read-write]
Player 版本 : | Flash Player 9 |
指示数据的字节顺序;可能的值为 BIG_ENDIAN
或 LITTLE_ENDIAN
。
默认值为 Endian.BIG_ENDIAN
.
实现
public function get endian():String
public function set endian(value:String):void
另请参见
objectEncoding:uint
[read-write]
Player 版本 : | Flash Player 9 |
在写入或读取对象时,控制所使用的 Action Message Format (AMF) 的版本。
实现
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
另请参见
public function close():void
Player 版本 : | Flash Player 9 |
立即关闭该流并取消下载操作。 无法在调用 close()
方法后从该流中读取数据。
引发
public function load(request:URLRequest):void
Player 版本 : | Flash Player 9 |
开始下载 request
参数中指定的 URL。
注意:如果要加载的文件包含非 ASCII 字符(在许多非英语的语言中出现),则建议使用 UTF-8 或 UTF-16 编码(而不是 ASCII 等非 Unicode 格式)来保存文件。
如果加载操作很快失败,将引发描述失败情况的 IOError 或 SecurityError(包括本地文件安全错误)异常。 否则,如果 URL 下载开始成功下载,将调度 open
事件;如果发生错误,将调度错误事件。
使用该方法时,请考虑 Adobe ® Flash ® Player 安全模型:
- 如果执行调用的 SWF 文件在只能与本地文件系统内容交互的沙箱中,而目标资源来自网络沙箱,则不允许进行数据加载。
- 如果执行调用的 SWF 文件来自网络沙箱而目标资源在本地,也不允许进行数据加载。
- 默认情况下,加载的 URL 所在的域必须与执行调用的 SWF 文件所在域完全相同。 例如,位于 www.adobe.com 的 SWF 文件只能从同样位于 www.adobe.com 的源中加载数据。 若要从其它域中加载数据,请在承载 SWF 文件的服务器上放置一个跨域策略文件。
- 可以在包含 SWF 内容的 HTML 页中设置
object
和 embed
标签的 allowNetworking
参数,防止 SWF 文件使用此方法。
有关详细信息,请参阅以下部分:
参数
| request:URLRequest — 一个 URLRequest 对象,指定要下载的 URL。 如果所传递的参数值或 URLRequest 对象的 URLRequest.url 属性为 null ,则 Flash Player 会引发空指针错误。
|
事件
| complete:Event — 在成功加载数据后调度。 |
|
| httpStatus:HTTPStatusEvent — 如果通过 HTTP 进行访问,并且当前 Flash Player 环境支持获得状态代码,则除了 complete 或 error 事件,还可以接收到 HTTPStatusEvent 事件。 |
|
| ioError:IOErrorEvent — 无法完成加载操作。 |
|
| open:Event — 在加载操作开始时调度。 |
|
| securityError:SecurityErrorEvent — 加载操作尝试从调用方安全沙箱外部的服务器检索数据。 可以通过在服务器上使用策略文件来解决此问题。 |
引发
| ArgumentError — URLRequest.requestHeader 对象不能包含某些被禁用的 HTTP 请求标头。 有关详细信息,请参阅 URLRequestHeader 类的描述。
|
|
| MemoryError — 此错误可能由以下原因引起:- Flash Player 无法将
URLRequest.data 参数从 UTF8 转换为 MBCS。 若传递给 load() 的 URLRequest 对象设置为执行 GET 操作并且 System.useCodePage 设置为 true ,就会发生该错误。 - Flash Player 无法为
POST 数据分配内存。 如果传递给 load 的 URLRequest 对象设置为执行 POST 操作,将发生该错误。
|
|
| SecurityError — 本地不受信任的 SWF 文件可能无法与 Internet 进行通信。 可通过将此 SWF 文件重新分类为只能与远程内容交互或受信任来解决此问题。
|
另请参见
public function readBoolean():Boolean
Player 版本 : | Flash Player 9 |
从该流读取一个布尔值。 读取单个字节,如果字节非零,则返回 true
,否则返回 false
。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readByte():int
Player 版本 : | Flash Player 9 |
从该流读取一个带符号字节。
返回值在 -128...127 之间。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Player 版本 : | 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 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readDouble():Number
Player 版本 : | Flash Player 9 |
从该流读取一个 IEEE 754 双精度浮点数。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readFloat():Number
Player 版本 : | Flash Player 9 |
从该流读取一个 IEEE 754 单精度浮点数。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readInt():int
Player 版本 : | Flash Player 9 |
从该流读取一个带符号的 32 位整数。
返回值在 -2147483648...2147483647 之间。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readMultiByte(length:uint, charSet:String):String
Player 版本 : | Flash Player 9 |
使用指定的字符集从字节流中读取指定长度的多字节字符串。
参数
| length:uint — 要从字节流中读取的字节数。
|
|
| charSet:String — 表示用于解释字节的字符集的字符串。 可能的字符集字符串包括 "shift_jis" 、"CN-GB" 、"iso-8859-1" ”等。 有关完整列表,请参阅Supported Character 。
注意:如果当前系统无法识别 charSet 参数的值,则 Flash Player 将采用系统的默认代码页作为字符集。 例如,charSet 参数的值(如在使用 01 而不是 1 的 myTest.readMultiByte(22, "iso-8859-01") 中)可能在您的开发计算机上起作用,但在其它计算机上可能不起作用。 在另一台计算机上,Flash Player 将使用系统的默认代码页。
|
返回
引发
public function readObject():*
Player 版本 : | Flash Player 9 |
从以 Action Message Format (AMF) 编码的套接字读取一个对象。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
另请参见
public function readShort():int
Player 版本 : | Flash Player 9 |
从该流读取一个带符号的 16 位整数。
返回值在 -32768...32767 之间。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readUnsignedByte():uint
Player 版本 : | Flash Player 9 |
从该流读取一个无符号字节。
返回值在 0...255 之间。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readUnsignedInt():uint
Player 版本 : | Flash Player 9 |
从该流读取一个无符号的 32 位整数。
返回值在 0...4294967295 之间。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readUnsignedShort():uint
Player 版本 : | Flash Player 9 |
从该流读取一个无符号的 16 位整数。
返回值在 0...65535 之间。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readUTF():String
Player 版本 : | Flash Player 9 |
从该流读取一个 UTF-8 字符串。 假定字符串的前缀是无符号的短整型(以字节表示长度)。
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
public function readUTFBytes(length:uint):String
Player 版本 : | Flash Player 9 |
从该流读取长度为 length
的 UTF-8 字节序列,并返回一个字符串。
参数
| length:uint — 一个 UTF-8 字节序列。
|
返回
引发
| EOFError — 可读取的数据不足。 若本地 SWF 文件触发了安全警告,则 Flash Player 会阻止将 URLStream 数据用于 ActionScript。 当发生这种情况时,即使收到了数据,bytesAvailable 属性也将返回 0,而且任何读方法都将引发 EOFError 异常。
|
|
| IOError — 该流发生了 I/O 错误,或者该流未打开。
|
事件对象类型: flash.events.Event
Event.type property = flash.events.Event.COMPLETE
Player 版本 : | Flash Player 9 |
成功加载数据后调度。
定义
complete
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 已完成加载的网络对象。
|
事件对象类型: flash.events.HTTPStatusEvent
HTTPStatusEvent.type property = flash.events.HTTPStatusEvent.HTTP_STATUS
Player 版本 : | Flash Player 9 |
若对 URLStream.load()
的调用尝试通过 HTTP 访问数据并且当前的 Flash Player 能够检测并返回该请求的状态代码,则进行调度。 (有些浏览器环境可能无法提供此信息。) 请注意,在发送任何 complete
或 error
事件之前还将发送 httpStatus
(如果有)。
定义
httpStatus
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
status | 由服务器返回的 HTTP 状态代码。 |
target | 接收 HTTP 状态代码的网络对象。 |
另请参见
事件对象类型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR
Player 版本 : | Flash Player 9 |
在出现输入/输出错误并由此导致加载操作失败时调度。
定义
ioError
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 发生输入/输出错误的网络对象。 |
text | 要显示为错误消息的文本。 |
另请参见
事件对象类型: flash.events.Event
Event.type property = flash.events.Event.OPEN
Player 版本 : | Flash Player 9 |
在加载操作开始时调度。
定义
open
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 已打开连接的网络对象。 |
另请参见
事件对象类型: flash.events.ProgressEvent
ProgressEvent.type property = flash.events.ProgressEvent.PROGRESS
Player 版本 : | Flash Player 9 |
在下载操作过程中收到数据时调度。 可以使用 URLStream 类方法立即读取已接收的数据。
定义
progress
事件对象的
type
属性值。
此事件具有以下属性:
属性 | 值 |
bubbles | false |
bytesLoaded | 在侦听器处理事件时加载的项数或字节数。 |
bytesTotal | 如果加载进程成功,最终将加载的项目或字节总数。 |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 报告进度的网络对象。 |
另请参见
事件对象类型: flash.events.SecurityErrorEvent
SecurityErrorEvent.type property = flash.events.SecurityErrorEvent.SECURITY_ERROR
Player 版本 : | 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-2007 Adobe Systems Incorporated. All rights reserved.
Wed Jun 13 2007, 3:54 AM GMT-07:00
当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/net/URLStream.html