невозможно получить код ответа HTTP / заголовки в ActionScript 3? - PullRequest
5 голосов
/ 17 февраля 2010

Я использую URLLoader для POST на сервере. Ответ xml от сервера может дать ошибку 404 или 403 (запрещено). Однако я не могу получить коды ответов.

Вот код

  var urlString:String = "some url";
  var urlRequest:URLRequest = new URLRequest(urlString);
  var loader:URLLoader = new URLLoader();
  loader.addEventListener( Event.COMPLETE, setXMLData );
  loader.addEventListener( IOErrorEvent.IO_ERROR, ioHandler );
  loader.addEventListener( HTTPStatusEvent.HTTP_STATUS, httpStatusHandler );

//...

public function httpStatusHandler(evt:HTTPStatusEvent):void {
    trace("status is " + evt.status);
}

статус всегда равен 0 независимо от того, возвращаю ли я 200, 400, 404, 301, 500 и т. Д. *

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 17 февраля 2010

Только для AIR. Вы можете использовать httpResponseStatus. В противном случае во Flash / Flex без AIR вы не сможете.

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/URLLoader.html#event:httpResponseStatus

httpResponseStatus Event
Тип объекта события: flash.events.HTTPStatusEvent HTTPStatusEvent.type property = flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS

Языковая версия: ActionScript 3.0 Версии среды выполнения: AIR 1.0 AIR 1.0

Отправляется, если вызов метода load () пытается получить доступ к данным через HTTP, и Adobe AIR может обнаружить и вернуть код состояния для запроса. В отличие от события httpStatus, событие httpResponseStatus доставляется перед любыми данными ответа. Кроме того, событие httpResponseStatus содержит значения для свойств responseHeaders и responseURL (которые не определены для события httpStatus. Обратите внимание, что событие httpResponseStatus (если оно есть) будет отправлено до (и в дополнение к) любого события complete или error.

0 голосов
/ 29 апреля 2015

В качестве позднего ответа (FWIW):

Из того, что я прочитал, коды состояния, которые вы получаете, зависят от того, в каком браузере работает Flash-плеер.

Одна статья говорит, что вы можете получить только 200 или 500. Один вопрос SO говорит, что они получили 207 в Chrome, но 0 в Firefox.

Я лично провел тестирование с использованием проигрывателя dev Flash, а также версии ActiveX и смог получить много разных кодов состояния 2XX / 4XX HTTP (но не смог получить коды перенаправления 3XX, которые я пробовал, поскольку запросы перенаправлялись и вернул 200с).

0 голосов
/ 17 февраля 2010

возможность просмотра заголовков ограничена в нескольких браузерах, поэтому у флэш есть проблема с передачей информации. Это в основном связано с настройками браузера, но я еще не нашел тот, где он на самом деле работает. вывод события состояния .

Я сдался и заставил файл напечатать код ответа в моих проектах, что не удивительно (и несколько побеждает точку), но, кажется, работает.

...