如何使用air应用程序为flash程序员加载外部xml?

时间:2010-04-14 06:21:24

标签: flash air

我几天前遇到过这个问题,同时尝试将外部xml文件导入AIR应用程序。

 import flash.net.URLRequest;
 var ldr:Loader = new Loader();
 var url:String = "http://willperone.net/rss.php";
 var urlReq:URLRequest = new URLRequest(url);
 ldr.load(urlReq);
 ldr.addEventListener(Event.COMPLETE , function(e) {
    trace('Wow, completed ...');
 });
 ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function(e) {
    trace('IO_ERROR');
 });

并始终显示IO_ERROR。 我可能做错了或需要一些配置的东西,所以请帮助

2 个答案:

答案 0 :(得分:2)

IOErrorEvent告诉您它无法加载您尝试加载的资源。 http://willperone.net/rss.php实际上有什么东西吗?也许XML或PHP解析错误?我还注意到您正在使用Loader来尝试加载文本内容。要用于加载XML(或文本,json,二进制等)的类是URLLoaderLoader是一个DisplayObject子类,主要用于将swfs,图像和可视资源加载到显示列表中。这可能是罪魁祸首。

答案 1 :(得分:0)

谢谢你们, 我发现问题出在哪里: 我没有指定收到的内容的类型, 它在我使用时解决了

request.contentType = "text/xml";

所以代码看起来像这样:

function getData(onComplete) {
    var request:URLRequest = new URLRequest("http://...");
    request.contentType = "text/xml";
    request.data = "";
    request.method = URLRequestMethod.POST;
    var loader:URLLoader = new URLLoader();
    loader.addEventListener(Event.COMPLETE ,function(e) { xmlParser(e); onComplete(e); } );
    try
    {
        mainData.splice(0,mainData.length);
        loader.load(request);
        return true;
    }
    catch (e){
        return false;
    }
}


function xmlParser(e) {
    var xml:XML = new XML(URLLoader(e.target).data);
    }
}