AS3 URLLoader, выбрасывающий URL, не найден, но подключается успешно - PullRequest
0 голосов
/ 18 мая 2009

Хорошо, немного странно. У меня есть простой URLLoader в AS3, который загружает внешний документ XML. Он загружается просто отлично, я получаю правильный ответ 302 Не изменено в Чарльз , однако Flash сообщает мне:

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

Я подтвердил, что могу просматривать URL-адреса через мой браузер и cURL, и Чарльз говорит, что мой SWF-файл может и успешно получает к нему доступ. Однако я все еще получаю этот URL-адрес не найден. Согласно документации Flash Actionscript 3, это абсолютно правильный способ использования URLLoader для загрузки внешних данных, включая XML.

Обновлен код с pastie.

Ответы [ 2 ]

2 голосов
/ 18 мая 2009

Я нахожу структуру вашего кода немного странной - почему у вас есть функции внутри функции?

Я переписал ваш код следующим образом, и он прекрасно работает (я просто запустил его на временной шкале во флэш-памяти, потому что мне лень настраивать новый проект):

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 голос
/ 18 мая 2009

Не зная всех деталей и предполагая, что вы правильно реализовали сервисы RESTful, ваш URLRequest может вызывать сервис с неверным методом (POST, а не GET).

Ознакомьтесь с этим руководством по вызову сервисов RESTful из Actionscript 3:

Использование веб-служб REST в ActionScript 3

В нем есть полезная информация по настройке типа запроса и решению некоторых других проблем, которые могут возникнуть (например, установка типа возвращаемых данных и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...