2009-05-18 50 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