Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.11.2010, 15:30
Castro вне форума Посмотреть профиль Отправить личное сообщение для Castro Найти все сообщения от Castro
  № 1  
Ответить с цитированием
Castro

Регистрация: Sep 2009
Сообщений: 68
По умолчанию Вопрос по статусу 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);
		}
 
	}
 
}
Код немного почикан для уменьшения размера

Старый 26.11.2010, 23:38
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 2  
Ответить с цитированием
maxkar

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

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

Старый 26.11.2010, 23:52
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 3  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Есть статусный код, для Windows точно. Я сам его неоднократно наблюдал, после того как не удалось дождаться ответа от сервера. Код '0'.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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