Question

Je ne parviens pas à un script XMLSocket en AS3. J'ai un serveur java et je suis en train d'envoyer un données XML, mais le serveur ne recieving rien. Le plus surprenant est que mon script fonctionnait très bien il y a un mois, et maintenant mes retours d'écoute IOError moi:

"Erreur # 2031:. Socket error URL: 127.0.0.1 au test () à Client_fla :: MainTimeline / frame1 () "

et mon auditeur SecurityError:

"Erreur # 2048: violation de sécurité Sandbox: file: /// C | /Documents%20and%20Settings/Zeph/Bureau/Client.swf ne peut pas charger des données à partir 127.0.0.1:18000. au test () à Client_fla :: MainTimeline / frame1 () "

J'ai essayé de changer IP, j'ai essayé sur un autre ordinateur, j'ai essayé de tirer une ancienne version de mon script, ce qui n'a pas changé, sans résultat.

Je ne peux pas comprendre pourquoi il a cessé de travailler comme ça. Voici mon script:

package
{

    import flash.net.XMLSocket;
    import flash.events.*;
    import flash.display.MovieClip;

    public class test extends MovieClip 
    {

        public function test()
        {
            trace("pouet");
            var xmlsock:XMLSocket = new XMLSocket(); 
            xmlsock.connect("127.0.0.1", 18000);
            var xmlFormattedData = new XML('<message pseudo="Nix" value="Coucou !"/>'); 
            xmlsock.send(xmlFormattedData);
            xmlsock.addEventListener(DataEvent.DATA, onData);
            xmlsock.addEventListener(IOErrorEvent.IO_ERROR, ioerror);
            xmlsock.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secuerror);
            xmlsock.send(xmlFormattedData);

        }

        private function onData(event:DataEvent):void 
        { 
            trace("[" + event.type + "] " + event.data); 
        }


        private function ioerror(event:IOErrorEvent):void 
        { 
        trace(event);
        }

        private function secuerror(event:SecurityErrorEvent):void 
        { 
        trace(event);
        }

    }

}

Je deviens fou avec cela, quelqu'un at-il une idée?

Merci pour la lecture!

Était-ce utile?

La solution

l'erreur indique, que vous exécutez une application flash de votre système de fichiers local et cette application souhaite faire une demande de réseau (à votre serveur java).

Ce n'est pas autorisé par défaut. Vous pouvez faire une des deux choses:

  • Mise à jour de vos paramètres de sécurité globale dans votre lecteur flash (clic droit, les paramètres avancés, les paramètres de sécurité globaux, puis définissez le fichier flash ou le dossier entier pour être autorisé à faire des requêtes réseau)

  • Exécuter votre application Flash à partir d'un serveur Web (et assurez-vous qu'un crossdomain.xml est en place sur le serveur java).

Autres conseils

En tant que votre erreur indique, vous rencontrez une violation de sécurité sandbox. Cela signifie que le flash ne permettront actifs de domaines d'application autres que lui-même. Il existe essentiellement deux corrections, un beaucoup plus simple que l'autre:

  1. En savoir sur la façon de créer et de charger crossdomain xml . Ceci est simplement une « politique » sur le serveur que votre application flash en cours d'exécution lit. Il peut être difficile à mettre en place correctement, mais cela est la voie généralement acceptée.

  2. Sur vos paramètres de sortie, sous la rubrique « Sécurité de lecture locale » vous pouvez être en mesure de vérifier « les fichiers du réseau d'accès », au lieu de « accès aux fichiers locaux uniquement » - et résoudre votre problème rapidement.

L'espoir qui aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top