Frage

Ich habe Probleme mit einem XMLSocket -Skript in AS3. Ich habe einen Java -Server und versuche, eine XML -Daten zu senden, aber der Server erhält nichts. Am überraschendsten ist, dass mein Drehbuch vor einem Monat sehr gut funktioniert hat und jetzt mein IoError -Hörer zurückkehrt:

"Fehler #2031: Socket -Fehler. URL: 127.0.0.1 at test () unter client_fla :: wälteline/Frame1 ()"

und mein SecurityError -Hörer:

"Fehler #2048: Sicherheits -Sandboxverletzung: Datei: /// C | /document%20and%20Settings/zeph/bureau/client.swf können Daten nicht laden von 127.0.0.1:18000. At test () unter client_fla :: wälteline/ Frame1 () "

Ich habe versucht, die IP zu ändern, ich habe auf einem anderen Computer versucht, ich habe versucht, eine frühere Version meines Skripts zu ziehen, die unverändert war, ohne Ergebnis.

Ich kann einfach nicht verstehen, warum es so aufgehört hat, so zu arbeiten. Hier ist mein Skript:

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);
        }

    }

}

Ich werde sauer damit, hat jemand eine Idee?

Danke fürs Lesen!

War es hilfreich?

Lösung

Der Fehler schlägt vor, dass Sie eine Flash -Anwendung in Ihrem lokalen Dateisystem ausführen, und diese Anwendung möchte eine Netzwerkanforderung (auf Ihren Java -Server) stellen.

Dies ist standardmäßig nicht zulässig. Sie können eines von zwei Dingen tun:

  • Aktualisieren Sie Ihre globalen Sicherheitseinstellungen in Ihrem Flash -Player (rechter Klicken, erweiterte Einstellungen, globale Sicherheitseinstellungen, und setzen Sie die Flash -Datei oder den gesamten Ordner so, dass sie Netzwerkanforderungen durchführen können).

  • Führen Sie Ihre Flash -Anwendung von einem Webserver aus (und stellen Sie sicher, dass auf dem Java -Server eine Crossdomain.xml vorhanden ist).

Andere Tipps

Wenn Ihr Fehler angibt, erleben Sie einen Sandbox -Sicherheitsverletzung. Dies bedeutet, dass Flash keine Vermögenswerte von anderen Anwendungsdomänen als seine eigenen zulässt. Es gibt im Grunde zwei Fixes, eine viel einfacher als die andere:

  1. Lesen Sie nach, wie Sie erstellen und laden können Crossdomain XML. Dies ist einfach eine "Richtlinie" auf dem Server, die in Ihrer laufenden Flash -Anwendung liest. Es kann schwierig sein, korrekt einzurichten, aber dies ist die allgemein anerkannte Route.

  2. In Ihren Ausgabeinstellungen können Sie unter "Local Playback Security" möglicherweise "Zugriffsnetzwerkdateien" überprüfen, anstatt nur auf "nur auf lokale Dateien zuzugreifen" - und Ihr Problem schnell zu lösen.

Ich hoffe, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top