包 | flash.net |
类 | public final class URLRequest |
继承 | URLRequest Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9 |
load()
方法和其他加载操作,以便启动 URL 下载。这些对象还将传递给 FileReference 类的 upload()
和 download()
方法。
只能与本地文件系统内容交互的沙箱中的 SWF 文件无法加载网络沙箱中的资源所包含的数据,也无法为该资源提供数据。
默认情况下,执行调用的 SWF 文件和加载的 URL 必须在同一域中。例如,位于 www.adobe.com 的 SWF 文件只能从同样位于 www.adobe.com 的源中加载数据。若要从不同的域中加载数据,请在承载数据的服务器上放置一个 URL 策略文件。
但在 Adobe AIR 中,应用程序安全沙箱中的内容(与 AIR 应用程序一起安装的内容)不受这些安全限制的约束。对于在 Adobe AIR 中运行的内容,应用程序安全沙箱中的文件可以访问使用以下任一 URL 方案的 URL:
应用程序安全域中的文件(随 AIR 应用程序一起安装的文件),可以使用以下任一 URL 方案访问 URL:
http
和 https
file
app-storage
app
在 Adobe AIR 中运行且不在应用程序安全沙箱中的内容与在浏览器(在 Flash Player 中)中运行的内容遵循相同的限制,加载操作受内容的域和 URL 策略文件中授予的任何权限控制。
有关安全性的详细信息,请参阅以下部分:
另请参见
属性 | 定义方 | ||
---|---|---|---|
authenticate : Boolean 指定是否应为此请求处理验证请求,如果是,则为 true,否则为 false。 | URLRequest | ||
cacheResponse : Boolean 指定是否应为此请求缓存成功的响应数据。 | URLRequest | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
contentType : String data 属性中内容的 MIME 内容类型。 | URLRequest | ||
data : Object 一个对象,它包含将随 URL 请求一起传输的数据。 | URLRequest | ||
digest : String 唯一地标识将存储到 Flash Player 缓存中(或从中检索)的已签名 Adobe 平台组件的字符串。 | URLRequest | ||
followRedirects : Boolean 指定是否要遵循重定向,如果是,则为 true,否则为 false。 | URLRequest | ||
manageCookies : Boolean 指定 HTTP 协议堆栈是否应管理此请求的 cookie。 | URLRequest | ||
method : String 控制 HTTP 式提交方法。 | URLRequest | ||
prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | ||
requestHeaders : Array 要追加到 HTTP 请求的 HTTP 请求标头的数组。 | URLRequest | ||
url : String 所请求的 URL。 | URLRequest | ||
useCache : Boolean 指定在此 URLRequest 获取数据之前是否应查询本地缓存。 | URLRequest | ||
userAgent : String 指定要在 HTTP 请求中使用的用户代理字符串。 | URLRequest |
方法 | 定义方 | ||
---|---|---|---|
URLRequest(url:String = null) 创建 URLRequest 对象。 | URLRequest | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
设置循环操作动态属性的可用性。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object |
authenticate | 属性 |
authenticate:Boolean
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
指定是否应为此请求处理身份验证请求,如果是,则为 true
,否则为 false
。如果为 false
,则验证挑战返回 HTTP 错误。
支持的身份验证方法有:
注意:FileReference.upload()
、FileReference.download()
和 HTMLLoader.load()
方法不支持 URLRequest.authenticate
属性。
默认值为 true.
public function get authenticate():Boolean
public function set authenticate(value:Boolean):void
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。 |
另请参见
cacheResponse | 属性 |
cacheResponse:Boolean
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
指定是否应为此请求缓存成功的响应数据。设置为 true
时,AIR 应用程序将使用操作系统的 HTTP 缓存。
注意:HTMLLoader.load()
方法不支持 URLRequest.cacheResponse
属性。
默认值为 true.
public function get cacheResponse():Boolean
public function set cacheResponse(value:Boolean):void
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。 |
另请参见
contentType | 属性 |
contentType:String
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9 |
data
属性中内容的 MIME 内容类型。
默认值为 application/x-www-form-urlencoded
。
注意:FileReference.upload()
、FileReference.download()
和 HTMLLoader.load()
方法不支持 URLRequest.contentType
属性。
发送 POST 请求时,contentType
和 data
属性的值必须正确对应。contentType
属性的值指示服务器如何解释 data
属性的值。
data
属性的值是一个 URLVariables 对象,则 contentType
的值必须是 application/x-www-form-urlencoded
。
data
属性的值为其他类型,则 contentType
的值应指示将要发送的 POST 数据的类型(该数据为 data
属性的值中包含的二进制或字符串数据)。
FileReference.upload()
,请求的内容类型将自动设置为 multipart/form-data
并忽略 contentType
属性的值。
在 Flash Player 10 和更高版本中,如果使用包含上载(由 POST 体内的“content-disposition”标头中的“filename”参数表示)的 multipart Content-Type(例如“multipart/form-data”),则 POST 操作会受应用于上载的安全规则的约束:
另外,对于任何 multipart Content-Type,语法必须有效(根据 RFC2046 标准)。如果语法无效,则 POST 操作受应用于上载的安全规则约束。
public function get contentType():String
public function set contentType(value:String):void
另请参见
data | 属性 |
data:Object
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9 |
一个对象,它包含将随 URL 请求一起传输的数据。
该属性与 method
属性配合使用。当 method
值为 GET
时,将使用 HTTP 查询字符串语法将 data
值追加到 URLRequest.url
值。当 method
值为 POST
(或 GET
之外的任何值)时,将在 HTTP 请求体中传输 data
值。
URLRequest API 支持二进制 POST
,并支持 URL 编码变量和字符串。该数据对象可以是 ByteArray、URLVariables 或 String 对象。
该数据的使用方式取决于所用对象的类型:
POST
数据。对于 GET
,不支持 ByteArray 类型的数据。对于 FileReference.upload()
和 FileReference.download()
,也不支持 ByteArray 类型的数据。
POST
,则使用 x-www-form-urlencoded 格式对变量进行编码,并且生成的字符串会用作 POST
数据。一种例外情况是对 FileReference.upload()
的调用,在该调用中变量将作为 multipart/form-data
发布中的单独字段进行发送。
GET
,则 URLVariables 对象将定义要随 URLRequest 对象一起发送的变量。
POST
或 GET
数据。
在方法(如 navigateToURL()
或 FileReference.upload()
)使用 URLRequest 对象前,不会发送该数据。
注意:contentType
值必须与 data
属性中的数据类型对应。请参阅 contentType
属性说明中的注释。
public function get data():Object
public function set data(value:Object):void
另请参见
该示例的要点遵循:
request
的 URLRequest 实例,同时将远程应用程序的 URL 作为参数。
data
属性。
navigateToURL
,在一个新的浏览器窗口中打开远程应用程序的 URL。
注意:若要运行该示例,必须将该示例中的远程应用程序 URL 替换为工作 URL。此外,需要用服务器代码处理 Flash Player 在 URLVariables 对象中捕获的信息。
package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class URLVariablesExample extends Sprite { public function URLVariablesExample() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; navigateToURL(request); } } }
digest | 属性 |
digest:String
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9.0.115.0 |
唯一地标识将存储到 Flash Player 缓存中(或从中检索)的已签名 Adobe 平台组件的字符串。Adobe 平台组件是一个签名文件(SWZ 文件),其中包含永久缓存在用户计算机上的 SWF 内容。Adobe 对所有 SWZ 进行签名。摘要对应于单个缓存文件;如果对该文件进行了任何更改,则其摘要的更改将以不可预知的方式进行。通过使用摘要,您可以跨多个域验证缓存文件。具有相同摘要的两个文件是同一个文件,具有不同摘要的两个文件是不同的文件。实际上无法创建文件来“窃听”摘要以假装是另一个摘要。此属性仅适用于 SWF 内容,不适用于在 AIR 中运行的 JavaScript 代码。
摘要基于 SHA-256 消息摘要算法(长度为 64 个字符,采用十六进制格式)。
例如,Flex SDK 包括 Flex 框架的 SWZ(而且它为该 SWZ 文件提供了摘要字符串)。可以将此 SWZ 发布到您的 Web 服务器上并加载到 SWF 文件中(使用 URLLoader 对象的 load()
方法)。如果最终用户的计算机已缓存了匹配的 SWZ 文件,则应用程序将使用此缓存的 SWZ 文件。(SWZ 文件在其 digest
与您提供的摘要匹配时匹配。)否则,应用程序将从您指定的 URL 下载 SWZ 文件。
仅在 URLLoader.load()
方法调用中使用的 URLRequest 对象中设置 digest
参数即可加载 SWZ 文件。如果 URLRequest 对象的 digest
属性在用于其它方法时进行了设置,则应用程序将引发 IOError 异常。
public function get digest():String
public function set digest(value:String):void
ArgumentError — 提供的摘要与从下载的签名文件或从缓存中加载的签名文件中提取的文件摘要不匹配。如果提供的摘要长度错误或包含无效(非十六进制)字符,则应用程序也会引发此错误。 |
loadBytes()
完成加载操作:
var myURLReq:URLRequest = new URLRequest(); myURLReq.url = "http://yourdomain/users/jdoe/test01/_rsc/Automated/AssetCaching_rsc/test01/rsl.swz"; myURLReq.digest = "3B0AA28C7A990385E044D80F5637FB036317BB41E044D80F5637FB036317BB41"; var myURLLoader:URLLoader = new URLLoader(); myURLLoader.dataFormat = URLLoaderDataFormat.BINARY; myURLLoader.addEventListener("complete", onC); myURLLoad.load(myURLReq); function onC(e) { var someLoader:Loader = new Loader(); addChild(someLoader); someLoader.loadBytes((ByteArray)(myURLLoad.data)); }
followRedirects | 属性 |
followRedirects:Boolean
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
指定是否要遵循重定向,如果是,则为 true
,否则为 false
。
注意:FileReference.upload()
、FileReference.download()
和 HTMLLoader.load()
方法不支持 URLRequest.followRedirects
属性。
默认值为 true.
public function get followRedirects():Boolean
public function set followRedirects(value:Boolean):void
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。 |
另请参见
manageCookies | 属性 |
manageCookies:Boolean
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
指定 HTTP 协议堆栈是否应管理此请求的 cookie。如果为 true
,则将 cookie 添加到请求中并记住响应 cookie。如果为 false
,则不 将 cookie 添加到请求中且不 记住响应 cookie,但用户可以通过直接处理标头来自行管理 cookie。
在 Mac OS 上,cookie 与 Safari 共享。清除 Mac OS 上的 cookie:
清除 Windows 上的 cookie:
默认值为 true.
public function get manageCookies():Boolean
public function set manageCookies(value:Boolean):void
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。 |
另请参见
method | 属性 |
method:String
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9 |
控制 HTTP 表单提交方法。
对于在 Flash Player 中(在浏览器中)运行的 SWF 内容,此属性限制为 GET 或 POST 操作,有效值为 URLRequestMethod.GET
或 URLRequestMethod.POST
。
对于在 Adobe AIR 中运行的内容,如果该内容位于应用程序安全沙箱内,则可以使用任何字符串值。否则,与在 Flash Player 中运行的内容一样,仅能使用 GET 或 POST 操作,有效值为 URLRequestMethod.GET
或 URLRequestMethod.POST
。
对于在 Adobe AIR 中运行的内容,当使用 navigateToURL()
函数时,运行时将使用 POST 方法的 URLRequest(其 method
属性设置为 URLRequestMethod.POST
)视为使用 GET 方法。
注意:如果在 Flash Player 中运行并且引用的表单没有正文,则即使将方法设置为 URLRequestMethod.POST
,Flash Player 也会自动使用 GET 操作。因此,建议始终包括“虚拟”正文以确保使用正确的 method。
默认值为 URLRequestMethod.GET.
public function get method():String
public function set method(value:String):void
ArgumentError —
如果 value 参数不是 URLRequestMethod.GET 或 URLRequestMethod.POST 。
|
另请参见
URLRequest.method
属性值显式设置为 URLRequestMethod.POST
。
该示例的要点遵循:
request
的 URLRequest 实例,同时将远程应用程序的 URL 作为参数。
data
属性。
URLRequest.method
属性的值设置为 URLRequestMethod.POST
。
navigateToURL
,在一个新的浏览器窗口中打开远程应用程序的 URL。
注意:若要运行该示例,必须将该示例中的远程应用程序 URL 替换为工作 URL。此外,需要用服务器代码处理 Flash Player 在 URLVariables 对象中捕获的信息。
package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class URLRequest_method extends Sprite { public function URLRequest_method() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; request.method = URLRequestMethod.POST; navigateToURL(request); } } }
requestHeaders | 属性 |
requestHeaders:Array
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9 |
要追加到 HTTP 请求的 HTTP 请求标头的数组。该数组由 URLRequestHeader 对象组成。数组中的每一对象必须是包含一个名称字符串和一个值字符串的 URLRequestHeader 对象,如下所示:
var rhArray:Array = new Array(new URLRequestHeader("Content-Type", "text/html"));
Flash Player 和 AIR 运行时对请求标头强加AIR 运行时对请求标头强加某些限制;有关详细信息,请参阅 URLRequestHeader 类的描述。
并非所有接受 URLRequest 参数的方法都支持 requestHeaders
属性,请参阅有关调用的方法的文档。例如,FileReference.upload()
和 FileReference.download()
方法不支持 URLRequest.requestHeaders
属性。
由于存在浏览器限制,因此仅对 POST
请求支持自定义 HTTP 请求标头,而对 GET
请求不提供相应支持。
public function get requestHeaders():Array
public function set requestHeaders(value:Array):void
另请参见
url | 属性 |
url:String
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9 |
所请求的 URL。
确保对统一资源定位器规范(请参阅 http://www.faqs.org/rfcs/rfc1738.html)中说明为不安全的字符或 URLRequest 对象的 URL 架构中保留的字符(如果未用于其保留用途)进行编码。例如,按照“http://www.example.com/orderForm.cfm?item=%23B-3&discount=50%25”
的规定,对百分比符号 (%) 使用“%25”
,对数字符号 (#) 使用“%23”
。
默认情况下,除非内容在 Adobe AIR 应用程序安全沙箱中运行,否则 URL 必须与执行调用的文件位于同一域中。若要从其他域中加载数据,请在承载数据的服务器上放置一个 URL 策略文件。有关详细信息,请参阅 URLRequest 类的说明。
对于在 Adobe AIR 中运行的内容,应用程序安全沙箱中的文件(使用 AIR 应用程序安装的文件)可以使用以下任一 URL 方案访问 URL:
http
和 https
file
app-storage
app
注意:AIR 和 Flash Player 9.0.115.0 及更高版本支持 IPv6(Internet 协议版本 6)。IPv6 是支持 128 位地址的 Internet 协议版本(它是支持 32 位地址的早期 IPv4 协议的改进版本)。您可能需要在网络接口中激活 IPv6。有关详细信息,请参阅承载数据的操作系统的帮助。如果承载系统上支持 IPv6,则可以在用方括号 ([]) 括起的 URL 中指定数字 IPv6 文本地址,如下所示。
rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]:1935/test
public function get url():String
public function set url(value:String):void
另请参见
useCache | 属性 |
useCache:Boolean
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
指定在此 URLRequest 获取数据之前是否应查询本地缓存。
注意:HTMLLoader.load()
方法不支持 URLRequest.useCache
属性。
默认值为 true.
public function get useCache():Boolean
public function set useCache(value:Boolean):void
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。 |
另请参见
userAgent | 属性 |
userAgent:String
[读写] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
指定要在 HTTP 请求中使用的用户代理字符串。
默认值是由 Flash Player 使用的同一用户代理字符串,该字符串在 Mac、Linux 和 Windows 中有所不同。
注意:在将 URLRequest 对象与 HTMLLoader 对象的 load()
方法一起使用时,此属性不影响用户代理字符串。若要设置 HTMLLoader 对象的用户代理字符串,请设置 HTMLLoader 对象的 userAgent
属性或设置静态 URLRequestDefaults.userAgent
属性。
public function get userAgent():String
public function set userAgent(value:String):void
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。 |
另请参见
URLRequest | () | 构造函数 |
public function URLRequest(url:String = null)
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 Flash Player 9 |
创建 URLRequest 对象。如果 System.useCodePage
为 true
,则使用系统代码页对该请求进行编码,而不使用 Unicode。如果 System.useCodePage
为 false
,则使用 Unicode 对该请求进行编码,而不使用系统代码页。
url:String (default = null ) —
所请求的 URL。随后可以使用 url 属性来设置 URL。
|
另请参见
complete
事件,并且 XML 文件中的数据会跟踪至输出。附加的事件处理函数会捕获其它事件,包括错误事件。
若要运行该示例,请将名为 XMLFile.xml 的文件与 SWF 文件放在同一个目录下。
package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLRequestExample extends Sprite { public function URLRequestExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("XMLFile.xml"); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } 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); } } }