class URLStream
package openfl.net
extends EventDispatcher
implements IDataInput
Available on all platforms
The URLStream class provides low-level access to downloading URLs. Data is
made available to application code immediately as it is downloaded,
instead of waiting until the entire file is complete as with URLLoader.
The URLStream class also lets you close a stream before it finishes
downloading. The contents of the downloaded file are made available as raw
binary data.
The read operations in URLStream are nonblocking. This means that you must
use the bytesAvailable
property to determine whether sufficient data is
available before reading it. An EOFError
exception is thrown if
insufficient data is available.
All binary data is encoded by default in big-endian format, with the most significant byte first.
The security rules that apply to URL downloading with the URLStream class are identical to the rules applied to URLLoader objects. Policy files may be downloaded as needed. Local file security rules are enforced, and security warnings are raised as needed.
Events:
complete | Dispatched when data has loaded successfully. |
---|---|
httpResponseStatus | Dispatched if a call to the |
httpStatus | Dispatched if a call to |
ioError | Dispatched when an input/output error occurs that causes a load operation to fail. |
open | Dispatched when a load operation starts. |
progress | Dispatched when data is received as the download operation progresses. Data that has been received can be read immediately using the methods of the URLStream class. |
securityError | Dispatched if a call to |
See also:
Constructor
Variables
read onlybytesAvailable:UInt
Returns the number of bytes of data available for reading in the input
buffer. Your code must call the bytesAvailable
property to ensure
that sufficient data is available before you try to read it with one
of the read
methods.
read onlyconnected:Bool
Indicates whether this URLStream object is currently connected. A call
to this property returns a value of true
if the URLStream object is
connected, or false
otherwise.
endian:Endian
Indicates the byte order for the data. Possible values are
Endian.BIG_ENDIAN
or Endian.LITTLE_ENDIAN
.
objectEncoding:ObjectEncoding
Controls the version of Action Message Format (AMF) used when writing or reading an object.
Methods
close():Void
Immediately closes the stream and cancels the download operation. No
data can be read from the stream after the close()
method is called.
Throws:
IOError | The stream could not be closed, or the stream was not open. |
---|
load(request:URLRequest):Void
Begins downloading the URL specified in the request
parameter.
Note: If a file being loaded contains non-ASCII characters (as
found in many non-English languages), it is recommended that you save
the file with UTF-8 or UTF-16 encoding, as opposed to a non-Unicode
format like ASCII.
If the loading operation fails immediately, an IOError or
SecurityError (including the local file security error) exception is
thrown describing the failure. Otherwise, an open
event is
dispatched if the URL download starts downloading successfully, or an
error event is dispatched if an error occurs.
By default, the calling SWF file and the URL you load must be in exactly the same domain. For example, a SWF file at www.adobe.com can load data only from sources that are also at www.adobe.com. To load data from a different domain, place a URL policy file on the server hosting the data.
In Flash Player, you cannot connect to commonly reserved ports. For a complete list of blocked ports, see "Restricting Networking APIs" in the OpenFL Developer's Guide.
In Flash Player, you can prevent a SWF file from using this method by
setting the allowNetworking
parameter of the the object
and
embed
tags in the HTML page that contains the SWF content.
In Flash Player 10 and later, and in AIR 1.5 and later, if you use a multipart Content-Type (for example "multipart/form-data") that contains an upload (indicated by a "filename" parameter in a "content-disposition" header within the POST body), the POST operation is subject to the security rules applied to uploads:
- The POST operation must be performed in response to a user-initiated action, such as a mouse click or key press.
- If the POST operation is cross-domain (the POST target is not on the same server as the SWF file that is sending the POST request), the target server must provide a URL policy file that permits cross-domain access.
Also, for any multipart Content-Type, the syntax must be valid (according to the RFC2046 standards). If the syntax appears to be invalid, the POST operation is subject to the security rules applied to uploads.
These rules also apply to AIR content in non-application sandboxes. However, in Adobe AIR, content in the application sandbox (content installed with the AIR application) are not restricted by these security limitations.
For more information related to security, see The Flash Player Developer Center Topic: <a href="http://www.adobe.com/go/devnet_security_en" scope="external">Security.
In AIR, a URLRequest object can register for the httpResponse
status
event. Unlike the httpStatus
event, the httpResponseStatus
event
is delivered before any response data. Also, the httpResponseStatus
event includes values for the responseHeaders
and responseURL
properties (which are undefined for an httpStatus
event. Note that
the httpResponseStatus
event (if any) will be sent before (and in
addition to) any complete
or error
event.
If there is an httpResponseStatus
event listener, the body of the
response message is always sent; and HTTP status code responses
always results in a complete
event. This is true in spite of whether
the HTTP response status code indicates a success or an error.
In AIR, if there is no httpResponseStatus
event listener, the
behavior differs based on the SWF version:
- For SWF 9 content, the body of the HTTP response message is sent only if the HTTP response status code indicates success. Otherwise (if there is an error), no body is sent and the URLRequest object dispatches an IOError event.
- For SWF 10 content, the body of the HTTP response message is always sent. If there is an error, the URLRequest object dispatches an IOError event.
Parameters:
request | A URLRequest object specifying the URL to download. If
the value of this parameter or the |
---|
Throws:
ArgumentError |
|
---|---|
MemoryError | This error can occur for the following reasons:
1. Flash Player or Adobe AIR cannot convert the
|
SecurityError | Local untrusted SWF files may not communicate with the Internet. This may be worked around by reclassifying this SWF file as local-with-networking or trusted. |
SecurityError | You are trying to connect to a commonly reserved port. For a complete list of blocked ports, see "Restricting Networking APIs" in the OpenFL Developer's Guide. |
Events:
complete | Dispatched after data has loaded
successfully. If there is a
|
---|---|
httpResponseStatus | Dispatched if a call to the |
httpStatus | If access is by HTTP and the current
environment supports obtaining status codes,
you may receive these events in addition to
any |
ioError | The load operation could not be completed. |
open | Dispatched when a load operation starts. |
securityError | A load operation attempted to retrieve data from a server outside the caller's security sandbox. This may be worked around using a policy file on the server. |
See also:
readBoolean():Bool
Reads a Boolean value from the stream. A single byte is read, and
true
is returned if the byte is nonzero, false
otherwise.
Returns:
True
is returned if the byte is nonzero, false
otherwise.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readByte():Int
Reads a signed byte from the stream. The returned value is in the range -128...127.
Returns:
Value in the range -128...127.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readBytes(bytes:ByteArray, offset:UInt = 0, length:Int = 0):Void
Reads length
bytes of data from the stream. The bytes are read into
the ByteArray object specified by bytes
, starting offset
bytes
into the ByteArray object.
Parameters:
bytes | The ByteArray object to read data into. |
---|---|
offset | The offset into |
length | The number of bytes to read. The default value of 0 will cause all available data to be read. |
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readDouble():Float
Reads an IEEE 754 double-precision floating-point number from the stream.
Returns:
An IEEE 754 double-precision floating-point number from the stream.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readFloat():Float
Reads an IEEE 754 single-precision floating-point number from the stream.
Returns:
An IEEE 754 single-precision floating-point number from the stream.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readInt():Int
Reads a signed 32-bit integer from the stream. The returned value is in the range -2147483648...2147483647.
Returns:
Value in the range -2147483648...2147483647.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readMultiByte(length:UInt, charSet:String):String
Reads a multibyte string of specified length from the byte stream using the specified character set.
Parameters:
length | The number of bytes from the byte stream to read. |
---|---|
charSet | The string denoting the character set to use to
interpret the bytes. Possible character set strings
include |
Returns:
UTF-8 encoded string.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|
readObject():Dynamic
Reads an object from the socket, encoded in Action Message Format (AMF).
Returns:
The deserialized object.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readShort():Int
Reads a signed 16-bit integer from the stream. The returned value is in the range -32768...32767.
Returns:
Value in the range -32768...32767.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readUTF():String
Reads a UTF-8 string from the stream. The string is assumed to be prefixed with an unsigned short indicating the length in bytes.
Returns:
A UTF-8 string.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readUTFBytes(length:UInt):String
Reads a sequence of length
UTF-8 bytes from the stream, and returns
a string.
Parameters:
length | A sequence of UTF-8 bytes. |
---|
Returns:
A UTF-8 string produced by the byte representation of characters of specified length.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to ActionScript. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readUnsignedByte():UInt
Reads an unsigned byte from the stream. The returned value is in the range 0...255.
Returns:
Value in the range 0...255.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readUnsignedInt():UInt
Reads an unsigned 32-bit integer from the stream. The returned value is in the range 0...4294967295.
Returns:
Value in the range 0...4294967295.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |
readUnsignedShort():UInt
Reads an unsigned 16-bit integer from the stream. The returned value is in the range 0...65535.
Returns:
Value in the range 0...65535.
Throws:
EOFError | There is insufficient data available to read. If a
local SWF file triggers a security warning, Flash
Player prevents the URLStream data from being
available to Haxe code. When this happens, the
|
---|---|
IOError | An I/O error occurred on the stream, or the stream is not open. |