使用 URLLoader 类和 URLVariables 类
与早期版本 ActionScript 中的 XML 和 LoadVars 类非常相似,URLLoader URL 的数据在下载完成之前不可用。尽管如果文件加载速度太快,可能不会调度 ProgressEvent.PROGRESS
事件,但您可以通过侦听要调度的 flash.events.ProgressEvent.PROGRESS
事件来监视下载进度(已加载的字节数和总字节数)。成功下载文件后,将调度 flash.events.Event.COMPLETE
事件。加载的数据将从 UTF-8 或
UTF-16 编码被解码为字符串。
注意 |
如果没有为 URLRequest.contentType设置值,则以 application/x-www-form-urlencoded的形式发送值。 |
URLLoader.load()方法(以及 URLLoader 类的构造函数,可选)使用一个参数,即 request,该参数是一个 URLRequest 实例。URLRequest 实例包含单个 HTTP 请求的所有信息,如目标 URL、请求方法(GET或 POST)、附加标头信息以及 MIME 类型(例如,当上载 XML 内容时)。
例如,要将 XML 数据包上载到服务器端脚本,您可以使用下面的 ActionScript 3.0 代码:
var secondsUTC:Number = new Date().time;
var dataXML:XML =
<login>
<time>{secondsUTC}</time>
<username>Ernie</username>
<password>guru</password>
</login>;
var request:URLRequest = new URLRequest("http://www.yourdomain.com/login.cfm");
request.contentType = "text/xml";
request.data = dataXML.toXMLString();
request.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
try
{
loader.load(request);
}
catch (error:ArgumentError)
{
trace("An ArgumentError has occurred.");
}
catch (error:SecurityError)
{
trace("A SecurityError has occurred.");
}
上面的代码片段创建了一个名为 dataXML的 XML 实例,其中包含要发送到服务器的 XML 数据包。接下来,将 URLRequest contentType属性设置为"text/xml",将 URLRequest data属性设置为 XML 数据包的内容(通过 XML.toXMLString()方法将该内容转换为字符串)。最后,创建一个新的 URLLoader 实例,并使用 URLLoader.load()方法将请求发送到远程脚本。
可以使用三种方式指定要在 URL 请求中传递的参数:
- 在 URLVariables 构造函数中
- 在 URLVariables.decode()方法中
- 作为 URLVariables 对象本身中的特定属性
当定义 URLVariables 构造函数或 URLVariables.decode()方法中的变量时,需要确保对"and"符进行 URL 编码,因为它具有特殊含义并作为分隔符使用。例如,由于与号作为参数的分隔符使用,当传递与号时,需要将与号从 &更改为 %26来对与号进行 URL 编码。
——摘自AS3.0帮助文档