Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос по статусу HTTP (http://www.flasher.ru/forum/showthread.php?t=147119)

Castro 26.11.2010 15:30

Вопрос по статусу HTTP
 
Чтобы проверять статус сервера я использую event:HTTPStatusEvent и оно конечно работает. Но вот сегодня сервер ребутили и мувик тупо остановился на выводе trace(variables) не выдав никакой информации.

Есть лит способ ещё как-то контролировать HTTP статус, чтобы узнать более точный ответ.
Мож по таймеру пытаться отправлять запрос, а потом вываливаться ошибкой что сервер лежет? Или как ещё?
Код AS3:

package 
{
        import flash.display.MovieClip;
        /*import flash.net.URLRequest;
        import flash.net.URLVariables; */

        import flash.events.*;
        //import flash.events.IEventDispatcher;
        import CurrentKPISelector;
        import Main;
        import flash.net.*;
        import com.greensock.*;
        import com.greensock.easing.*;
 
 
 
        public class XMLDataLoaderProd extends MovieClip
        {
                private var req:URLRequest=new URLRequest();
                private var loader:URLLoader = new URLLoader();
                private var list:XMLList = new XMLList();
                private var regionsXML:XMLList = new XMLList();
                private var variables:URLVariables = new URLVariables();
 
 
                public function XMLDataLoaderProd()
                {
                        update();
                }
 
                public function update():void
                {
                        req.url = "data.php";
                        req.method = URLRequestMethod.GET;
                        variables.level = displayLevel;
                        req.data = variables;
                        loader.dataFormat = URLLoaderDataFormat.TEXT;
                        loader.addEventListener(Event.COMPLETE, completeHandler);
                        loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
                }
 
                public function loadXMLData():void
                {
                        try
                        {
                                update();
                                loader.load(req);
                                trace(variables);
                        }
                        catch (error:Error)
                        {
                                trace("Unable to load URL");
                        }
                }
 
                private function completeHandler(event:Event)
                {
                        try
                        {
                                //Паршу данные и записываю в массив объектов
                                dispatchEvent(new Event("mapRegionDataArrayLoaded"));
                        }
                        catch (error:Error)
                        {
                                dispatchEvent(new Event("showInfoPanel"));
 
 
                        }
                }
 
                private function httpStatusHandler(event:HTTPStatusEvent):void
                {
                        trace("httpStatusHandler: " + event);
                        trace("status: " + event.status);
                }
 
        }
 
}

Код немного почикан для уменьшения размера

maxkar 26.11.2010 23:38

При отвалившемся сервере не может быть никакого HTTP-статуса, до него просто не доходит. Обрабатывайте IOErrorEvent.IO_ERROR и SecurityErrorEvent.SECURITY_ERROR. При этом на HTTP статус можно не смотреть, при кодах ошибок придет событие IOErrorEvent.IO_ERROR и закачка прекратится.

В вашем случае вполне понятно, что ничего после loader.load() не должно было происходить. Сервер не работает, соединение с ним установить нельзя, поэтому приходит IO_ERROR. Статусных кодов, естественно, нет. Они были бы, только если запрос нормально дошел до сервера. Да и после успешного кода (200) при получении ответа может прийти IO_ERROR (при закачке ответа связь оборвалась), так что IOErrorEvent и SecurityErrorEvent должны обрабатываться вообще всегда.

dimarik 26.11.2010 23:52

Есть статусный код, для Windows точно. Я сам его неоднократно наблюдал, после того как не удалось дождаться ответа от сервера. Код '0'.


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

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