| window.runtime 属性 | window.runtime.flash.net.URLRequest |
| 继承 | URLRequest Object |
load() 方法以启动 URL 下载,并传递给 FileReference 类的 upload() 和 download() 方法。
默认情况下,传递给 url 参数的 URL 必须与执行调用的 SWF 文件在完全相同的域,包括子域。 例如,www.adobe.com 和 store.adobe.com 是不同的域。 若要从其它域中加载数据,请在承载数据的服务器上放置一个跨域策略文件。
在运行于 Flash Player 的内容中使用此类时,请考虑以下安全模型:
但在 Adobe AIR 中,应用程序安全沙箱中的内容(使用 AIR 应用程序安装的内容)不受这些安全限制的约束。
对于在 Adobe AIR 中运行的内容,应用程序安全沙箱中的文件(使用 AIR 应用程序安装的文件)可以通过使用以下任一 URL 架构访问 URL:
http 和 https
file
app-storage
app
在 Adobe AIR 中运行且不在应用程序安全域中的内容与在浏览器(在 Flash Player 中)中运行的内容遵循相同的限制,加载操作受内容的域 和跨域策略文件中授予的任何权限控制。
有关详细信息,请参阅以下部分:
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
| 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 | ||
![]() | hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。 | Object | |
![]() | isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。 | Object | |
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。 | Object | |
![]() | toString():String
返回指定对象的字符串表示形式。 | Object | |
![]() | valueOf():Object
返回指定对象的原始值。 | Object | |
| authenticate | 属性 |
authenticate:Boolean [读写]
指定是否应为此请求处理身份验证请求,如果是,则为 true,否则为 false。如果为 false,则验证挑战返回 HTTP 错误。
支持的身份验证方法有:
注意:FileReference.upload()、FileReference.download() 和 HTMLLoader.load() 方法不支持 URLRequest.authenticate 属性。
默认值为 true
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。
|
另请参见
| cacheResponse | 属性 |
cacheResponse:Boolean [读写]
指定是否应为此请求缓存成功的响应数据。设置为 true 时,AIR 应用程序将使用操作系统的 HTTP 缓存。
注意:HTMLLoader.load() 方法不支持 URLRequest.cacheResponse 属性。
默认值为 true
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。
|
另请参见
| contentType | 属性 |
contentType:String [读写]
data 属性中内容的 MIME 内容类型。
注意:FileReference.upload()、FileReference.download() 和 HTMLLoader.load() 方法不支持 URLRequest.contentType 属性。
另请参见
| data | 属性 |
data:Object [读写] 一个对象,它包含将随 URL 请求一起传输的数据。
该属性与 method 属性一起使用。 在 Adobe AIR 中,当使用 GET 以外的任意 HTTP 方法时发送数据。在 Flash Player 中,当使用 POST HTTP 方法时发送数据。
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 对象前,不会发送该数据。
另请参见
| digest | 属性 |
digest:String [读写] 唯一地标识将存储到 Flash Player 缓存中(或从中检索)的已签名 Adobe 平台组件的字符串。摘要对应于单个缓存文件;如果对该文件进行了任何更改,则其摘要的更改将以不可预知的方式进行。通过使用摘要,您可以跨多个域验证缓存文件。具有相同摘要的两个文件是同一个文件,具有不同摘要的两个文件是不同的文件。实际上无法创建文件来“窃听”摘要以假装是另一个摘要。此属性仅适用于 SWF 内容,不适用于在 AIR 中运行的 JavaScript 代码。
摘要基于 SHA-256 消息摘要算法(长度为 64 个字符,采用十六进制格式)。
ArgumentError — 提供的摘要与从下载的签名文件或从缓存中加载的签名文件中提取的文件摘要不匹配。如果提供的摘要长度错误或包含无效(非十六进制)字符,则 Flash Player 也会引发此错误。
|
| followRedirects | 属性 |
followRedirects:Boolean [读写]
指定是否要遵循重定向,如果是,则为 true,否则为 false。
注意:FileReference.upload()、FileReference.download() 和 HTMLLoader.load() 方法不支持 URLRequest.followRedirects 属性。
默认值为 true
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。
|
另请参见
| manageCookies | 属性 |
manageCookies:Boolean [读写]
指定 HTTP 协议堆栈是否应管理此请求的 cookie。如果为 true,则将 cookie 添加到请求中并记住响应 cookie。如果为 false,则不 将 cookie 添加到请求中且不 记住响应 cookie,但用户可以通过直接处理标头来自行管理 cookie。
在 Mac OS 上,cookie 与 Safari 共享。清除 Mac OS 上的 cookie:
清除 Windows 上的 cookie:
默认值为 true
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。
|
另请参见
| method | 属性 |
method:String [读写] 控制 HTTP 式提交方法。
对于在 Flash Player 中(在浏览器中)运行的 SWF 内容,此属性限制为 GET 或 POST 操作,有效值为 URLRequestMethod.GET 或 URLRequestMethod.POST。对于在 Adobe AIR 中运行的内容,如果内容位于 application 安全域中,则可以使用任意字符串值;否则(如果内容在 AIR application 安全域中),仍将限于使用 GET 或 POST。
注意:如果在 Flash Player 中运行并且引用的表单没有正文,则即使将方法设置为 URLRequestMethod.POST,Flash Player 也会自动使用 GET 操作。
默认值为 URLRequestMethod.GET
ArgumentError — 如果 value 参数不是 URLRequestMethod.GET 或 URLRequestMethod.POST。
|
另请参见
URLRequest.method 属性值显式设置为 URLRequestMethod.POST。
该示例的要点遵循:
request 的 URLRequest 实例,同时将远程应用程序的 URL 作为参数。data 属性。URLRequest.method 属性的值设置为 URLRequestMethod.POST。navigateToURL,在一个新的浏览器窗口中打开远程应用程序的 URL。注意:若要运行该示例,必须将该示例中的远程应用程序 URL 替换为工作 URL。此外,还需要服务器代码来处理 URLVariables 对象中由 AIR 应用程序捕获的信息。
<html>
<head>
<script src="AIRAliases.js" />
<script>
function init() {
var url = "http://www.[yourDomain].com/application.jsp";
var request = new air.URLRequest(url);
var variables = new air.URLVariables();
variables.exampleSessionId = new Date().getTime();
variables.exampleUserLabel = "guest";
request.data = variables;
request.method = air.URLRequestMethod.POST;
air.navigateToURL(request);
}
</script>
</head>
<body onload='init()'>
</body>
</html>
| requestHeaders | 属性 |
requestHeaders:Array [读写] 要追加到 HTTP 请求的 HTTP 请求标头的数组。该数组由 URLRequestHeader 对象组成。数组中的每一对象必须是包含一个名称字符串和一个值字符串的 URLRequestHeader 对象,如下所示:
var rhArray:Array = new Array(new URLRequestHeader("Content-Type", "text/html"));
Flash Player 和 AIR 运行时对请求标头强加AIR 运行时对请求标头强加某些限制;有关详细信息,请参阅 URLRequestHeader 类的描述。
FileReference.upload() 和 FileReference.download() 方法不支持 URLRequest.requestHeaders 参数。
另请参见
| url | 属性 |
url:String [读写] 所请求的 URL。
对于在 Flash Player 中运行的内容和在 Adobe AIR 中运行且不在 application 安全沙箱中的内容,默认情况下,URL 必须与调用文件位于完全相同的域中,包括子域。例如,分别位于 www.adobe.com 和 store.adobe.com 中的文件的域不同。
确保对统一资源定位器规范(请参阅 http://www.faqs.org/rfcs/rfc1738.html)中说明为不安全的字符或 URLRequest 对象的 URL 架构中保留的字符(如果未用于其保留用途)进行编码。例如,按照“http://www.example.com/orderForm.cfm?item=%23B-3&discount=50%25”的规定,对百分比符号 (%) 使用“%25”,对数字符号 (#) 使用“%23”。
若要从其它域中加载数据,请在承载数据的服务器上放置一个跨域策略文件。 有关详细信息,请参阅 URLRequest 类说明中所述的安全性文档。此限制不适用于在应用程序安全沙箱中运行的 AIR 内容。
对于在 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
另请参见
| useCache | 属性 |
useCache:Boolean [读写] 指定在此 URLRequest 获取数据之前是否应查询本地缓存。
注意:HTMLLoader.load() 方法不支持 URLRequest.useCache 属性。
默认值为 true
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。
|
另请参见
| userAgent | 属性 |
userAgent:String [读写] 指定要在 HTTP 请求中使用的用户代理字符串。
默认值是由 Flash Player 使用的同一用户代理字符串,该字符串在 Mac 和 Windows 上不同。
注意:在将 URLRequest 对象与 HTMLLoader 对象的 load() 方法一起使用时,此属性不影响用户代理字符串。若要设置 HTMLLoader 对象的用户代理字符串,请设置 HTMLLoader 对象的 userAgent 属性或设置静态 URLRequestDefaults.userAgent 属性。
SecurityError — 调用方不在 AIR 应用程序安全沙箱中。
|
另请参见
| URLRequest | () | 构造函数 |
function URLRequest(url:String = null)
创建 URLRequest 对象。如果 System.useCodePage 为 true,则使用系统代码页对该请求进行编码,而不使用 Unicode。如果 System.useCodePage 为 false,则使用 Unicode 对该请求进行编码,而不使用系统代码页。
url:String (default = null) — 所请求的 URL。随后可以使用 url 属性来设置 URL。
|
另请参见
complete 事件,并且 XML 文件中的数据会跟踪至输出。附加的事件处理函数会捕获其它事件,包括错误事件。
要运行该示例,请将 AIRAliases.js 文件和名为 XMLFile.xml 的 XML 文件与 HTML 文件放在同一个目录中。
<html>
<head>
<script src="AIRAliases.js" />
<script>
function init() {
var loader = new air.URLLoader();
configureListeners(loader);
var request = new air.URLRequest("XMLFile.xml");
try {
loader.load(request);
} catch (error) {
air.trace("Unable to load requested document.");
}
}
function configureListeners(dispatcher) {
dispatcher.addEventListener(air.Event.COMPLETE, completeHandler);
dispatcher.addEventListener(air.Event.OPEN, openHandler);
dispatcher.addEventListener(air.ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(air.SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(air.HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(air.IOErrorEvent.IO_ERROR, ioErrorHandler);
}
function completeHandler(event) {
var loader = air.URLLoader(event.target);
air.trace("completeHandler: " + loader.data);
}
function openHandler(event) {
air.trace("openHandler: " + event);
}
function progressHandler(event) {
air.trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
function securityErrorHandler(event) {
air.trace("securityErrorHandler: " + event);
}
function httpStatusHandler(event) {
air.trace("httpStatusHandler: " + event);
}
function ioErrorHandler(event) {
air.trace("ioErrorHandler: " + event);
}
</script>
</head>
<body onload='init()'>
</body>
</html>