2010-09-20 1 views
2

J'essaie d'utiliser URLLoader pour charger un fichier XML à partir du serveur (même domaine que swf). Cela devrait être trop simple mais je reçois Erreur # 2032: Erreur fluxURLLoader n'essaie même pas de charger. Erreur # 2032: Erreur de flux

Si je trace l'événement d'état HTTP il montre juste status = 0 si j'ai lu que Mozilla ne fournit pas les codes d'état Flash Joueur donc peut-être que ce n'est pas informatif.

J'ai reniflé le trafic HTTP avec Charles et Flash n'essaye même pas de charger l'URL - aucune demande n'est faite, donc elle n'échoue même pas.

Je peux accéder à l'URL, qui est sur une URL interne qui ressemble à: http://media.project:8080/audio/playlist.xml

J'ai essayé de mettre un crossdomain.xml là-dedans (avec et sans à-ports = « 8080 »), bien qu'il ne devrait pas en avoir besoin.

Les événements onOpen et onActivate ne se déclenchent pas, un seul HTTPStatus et l'erreur IOError.

J'ai copié le code URLLoader commun de l'exemple Adobe, le mien ressemble à ceci:

public class PlaylistLoader extends EventDispatcher 
{ 
    public var xmlLoader:URLLoader; 
    public var url:String = ''; 

    public function PlaylistLoader(url:String) 
    { 
     url = url; 
     trace(url); 
     xmlLoader = new URLLoader(); 
     xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
     xmlLoader.addEventListener(Event.COMPLETE, onResult); 
     xmlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
     xmlLoader.addEventListener(Event.OPEN, onOpen); 
     xmlLoader.addEventListener(Event.ACTIVATE, onActivate); 
    } 

    public function loadData():void { 
     var req:URLRequest = new URLRequest(url); 
     trace(req); 
     xmlLoader.load(req); 
    } 

    protected function onResult(e:Event):void 
    { 
     var xmlData:XML = e.target.data as XML; 
     parseData(xmlData); 
    } 

    private function httpStatusHandler(event:HTTPStatusEvent):void { 
     trace("httpStatusHandler: " + event); 
    } 

    protected function onOpen(e:Event):void 
    { 
     trace(e); 
    } 

    protected function onActivate(e:Event):void 
    { 
     trace(e); 
    } 

    protected function onIOError(e:IOErrorEvent):void 
    { 
     trace(e); 
    } 

Répondre

3
url = url; 

dans le constructeur définit la localeurl à la localeurl. Si vous souhaitez enregistrer cette valeur à l'intérieur de l'objet, vous devez référencer l'élément d'objet url explicitement (ou un autre nom):

this.url = url; 
+0

Jeepers, vous êtes droite! – Anentropic

+0

J'aurais juré que j'avais écrit du code comme ça avant et ça marchait bien, mais évidemment pas ... – Anentropic

+0

Bonne réponse! Ne résout pas mon problème = (Retour à Google ... – stevendesu

0

il semble chaîne url encore vide

public var url:String = ''; 

est pas?

essayer

public var url:String = 'http://media.project:8080/audio/playlist.xml'; 
+0

oui, pour la raison décrite par Poke ci-dessous – Anentropic

Questions connexes