2009-05-18 95 views
0

好吧,得到一些不可思议的东西。我在AS3中有一个简单的URLLoader,用于加载外部XML文档。它加载就好了,我得到了Charles正确的302未修改响应,但是闪光灯告诉我:AS3 URLLoader丢失URL未找到,但正在成功连接

“找不到网址”

下面是相关代码:

 //============================================================================================= 
    public function openXML(name:String):void { //decides what XML data feed and opens it 
    //============================================================================================= 


       var xmlLoader:URLLoader = new URLLoader(); 
     var xmlData:XML = new XML(); 

     //add event listener to URLLoader to call closeXML upon completion 
     xmlLoader.addEventListener(Event.COMPLETE, closeXML); 

     xmlLoader.load(new URLRequest("http://www.gessnerengineering.com/projects")); 

     //========================================================= 
     function closeXML(e:Event):void { 
     //========================================================= 
      xmlData = new XML(xmlLoader.data); 
      xmlLoader.removeEventListener(Event.COMPLETE, closeXML); 

      drawPage(name, xmlData); 
     } 

    } 

根据调试器的问题行是:

xmlLoader.load(new URLRequest("http://www.gessnerengineering.com/projects")); 

我已验证我可以通过浏览器和cURL浏览URL,Charles说我的SWF可以并且也可以成功访问它。但是,我仍然收到此URL未找到错误。根据Flash Actionscript 3 documentation,这是使用URLLoader加载外部数据(包括XML)绝对正确的方式。

更新代码pastie.

+1

什么样的页面是/项目? (RESTful Web服务等)? – 2009-05-18 13:51:00

+0

正确的是RESTful Web服务,我通过rails创建它,它只有一个返回XML数据的动作。 – 2009-05-18 14:00:17

回答

2

我发现你的代码的结构有点奇怪 - 你为什么有函数内的函数?

我改写了你这样的代码,它工作完全正常(我只是跑在Flash事业的时间轴上我懒得建立一个新的项目):

var xmlLoader:URLLoader = new URLLoader(); 
var xmlData:XML = new XML(); 
var request:URLRequest = new URLRequest("http://www.gessnerengineering.com/projects"); 
request.method = URLRequestMethod.GET; 



//============================================================================================= 
    function openXML(name:String):void { //decides what XML data feed and opens it 
    //============================================================================================= 



    //add event listener to URLLoader to call closeXML upon completion 
    xmlLoader.addEventListener(Event.COMPLETE, closeXML); 
    xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
    xmlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError); 
    xmlLoader.load(new URLRequest("http://www.gessnerengineering.com/projects")); 

} 
function onIOError(e:IOErrorEvent):void { 
    trace("Error loading URL."); 
} 

function securityError(e:SecurityErrorEvent):void { 
    trace("security error"); 
} 


function closeXML(e:Event):void { 
    trace('xmlLoader.data ' + xmlLoader.data); 
    xmlData = new XML(xmlLoader.data); 
    xmlLoader.removeEventListener(Event.COMPLETE, closeXML); 
} 



openXML('ljkl'); 
1

不知道所有的细节,并假设你实现的RESTful服务得当,你的URLRequest可能会被调用了错误的方法(POST,而不是GET)的服务。

退房本教程的从ActionScript 3调用RESTful服务:

Consuming REST web Services in ActionScript 3

它有设置请求类型和一些可以弹出其他问题时(比如设置一些好的信息返回数据类型等)。

+0

为了补充,我在查尔斯检查了它,它正在发出一个GET请求,我没有在那里硬编码,但它正在制作一个。感谢您的链接。 – 2009-05-18 14:18:14