Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с чтением удаленного XML (http://www.flasher.ru/forum/showthread.php?t=151094)

aassaaa 22.02.2011 15:34

Проблема с чтением удаленного XML
 
Наверняка проблема связана с "безопасностью", но не понимаю как ее решать.
Есть удаленный сервер который возвращает xml файл.
Если запускать флешку из редактора, то все работает как нужно.
Если залить на хостинг и запустить - соединения с сервером не происходит.

Код AS3:

import flash.net.URLLoader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLRequest;
import flash.text.TextField;
 
var navData:XML;
 
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true);
loader.load(new URLRequest("http://...../xml/"));
 
function onComplete(evt:Event):void {
        try {
                navData = new XML(evt.target.data);
                trace(navData.city);
 
                //var MyCity:TextField = new MyCity();
                MyCity.text = navData.city;
 
                loader.removeEventListener(Event.COMPLETE, onComplete);
                loader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
        } catch (err:Error) {
                MyCity.text = 'xml parse error';
                trace ("Не удалось разобрать XML:\n" + err.message);
        }
}
 
function onIOError(evt:IOErrorEvent):void {
        MyCity.text = 'download error';
        trace("Ошибка при загрузке\n" + evt.text);
}

MyCity - это текстовое поле расположенное уже на сцене.

При запуске с сервера вообще ничего не происходит, ошибки не выводятся.
Как решить такую проблему?
Спасибо

TWETTI 22.02.2011 17:17

Как мне кажется надо рядом с файлом, который возвращает xml, положить файл политики безопасности(crossdomain.xml)
Код AS3:

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

и в коде загрузить его:
Код AS3:

Security.loadPolicyFile("http://www.some-site.com/crossdomain.xml");

Чтобы отловить эту ошибку надо подписаться на событие SecurityErrorEvent.SECURITY_ERROR.

aassaaa 22.02.2011 17:24

Спасибо. Проблема решена


Часовой пояс GMT +4, время: 00:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.