|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Ошибка 2101 key value pairs. Как обойти?
Есть URLLoader которые запрашивает у определенного php скрипта юникстайм.
Вот как происходит сам запрос /** * * @param название метода, который нужно вызывать на сервере, передается в * POST с ключом method * @param callback метод который вызывается после прихода ответа от сервера * должен принимать один параметр типа Object */ public function NetPacket(method:String, callback:Function, params:Object = null) { _callback = callback; var loader: URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, onComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); loader.dataFormat = URLLoaderDataFormat.TEXT; // изначально ставил VARIABLES, потом заменил на TEXT, но проблема осталась var vars:URLVariables = new URLVariables(); vars['method'] = method; if (params != null) { for (var i:String in params) { vars[i] = params[i]; } } var rand: String = "?" + int(Math.random() * 10000); var request:URLRequest = new URLRequest(NetPacket.HOST + NetPacket.SCRIPT + rand); request.method = URLRequestMethod.POST; request.data = vars; trace(request.data.toString()); try { loader.load(request); } catch (e:Error) { trace(e.getStackTrace()); } } private function onSecurityError(e:SecurityErrorEvent):void { e.target.removeEventListener(Event.COMPLETE, onComplete); e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); } private function onIOError(e:IOErrorEvent):void { e.target.removeEventListener(Event.COMPLETE, onComplete); e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); } private function onComplete(e:Event):void { e.target.removeEventListener(Event.COMPLETE, onComplete); e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); try { var data:Object = e.target.data; trace("PACKET DATA:", this, unescape(String(data))); if (_callback != null) { _callback.call(null, data); } } catch (err:Error) { Console.log(err.message); } } Цитата:
if(loaderInfo.hasOwnProperty("uncaughtErrorEvents")){ loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError); } Кто-нибудь поборол эту гадость?
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Может написать свой unescape, а лучше проверку String(data) на соответствие формату "URL-encoded query string containing name/value pairs" ? Например, тем же регэксом.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
а в каком месте выскакивает эрор? Можно слать данные строкой, в виде джейсона и парсить на сервере.
|
|
|||||
Цитата:
Я поставить то поставил, а билд старый запустил на девайсе, поэтому и отвалилось. Уже после того как тему создал, заметил. Но все равно странно, что приходится какие-то костыли изобретать. Ведь ошибка вываливается где-то "за кадром", между вызовом load() и обработчиком. Поэтому и try / catch не работает Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
Добавлено через 1 минуту для этого естественно надо тип URLLoaderDataFormat.TEXT; выставлять Добавлено через 3 минуты то, что URLLoader кидает эксепшен у себя внутрях при неправильном ответе - это известная грабля |
|
|||||
Цитата:
Очень странно, что скрипт такое возвращает. Может в возвращаемых данных какие-нить спецсимволы портят ответ? Типа другой кодировки и т.п.?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Стектрейс ошибки есть?
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
стектрейс там ведет внутрь urlLoader'а и возникает в момент получения ответа, но перед диспачингом события поэтому туда(к месту, где возникает эррор) не добраться.Странно, что adobe не завел какой-нибудь ивент на этот случай.
|
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
.
|
На секундочку показалось, что проблема в формате отправляемых данных URLVariables, которые делают decode в момент отправки.
Добавлено через 5 минут И что там с глобальным кэтчем, вообще не ловит мышей? Как он реагирует на throw "catch me if u can"? |
Часовой пояс GMT +4, время: 11:08. |
|
« Предыдущая тема | Следующая тема » |
|
|