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

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

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

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
По умолчанию Зачем URLLoader`у свойство dataFormat

Вроде глупый вопрос, но вот ситуация:
перед началом загрузки пишем
Код AS3:
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
Если мой сервер всегда отвечает в формате ключ-значение, тогда все ОК, но в случае необработаной ошибки php-скрипта я получаю ответ в формате XML с описанием проблемы (фактически "сырой" текст). В этом случае мое приложение начинает матом ругаться:
Код:
Error: Error #2101: Строка, переданная в URLVariables.decode(), должна быть
строкой запроса закодированного URL-адреса и содержать пары имя/значение.
	at Error$/throwError()
	at flash.net::URLVariables/decode()
	at flash.net::URLVariables()
	at flash.net::URLLoader/onComplete()
Конечно, если вся работа зависить от сервера, тогда я не там копаю, но если данные, которые я запросил для приложения не критичны (новости для бегущей строки, какая то рекламма или таблица рекордов для игры), тогда такое поведение весьма удручает...

И не говорите мне:
Код:
ипользуй  URLLoaderDataFormat.BINARY или URLLoaderDataFormat.TEXT
. Я так и делаю... Просто интересно, зачем такая хорошая плюшка, которая в определенных условиях превращается в ПЛЮХУ-ЗА-УХО.

Пэ.Эс.: Вместо того, чтобы спокойно отловить IOErrorEvent, я так же получаю этот результат. Так что не обязательно гнать на плохо написаный сервер. Он может быть просто недоступен и уже этим портить и без него неплохую картину.

Старый 10.07.2012, 16:00
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Тем не менее, если задать
Код AS3:
URLLoaderDataFormat.BINARY
, то свойство data загрзучика будет содержать ByteArray. Это явно не
Код AS3:
URLLoaderDataFormat.VARIABLES;
Лично я это часто использую, когда гружу зашифрованные файлы, которые флеш плеер сразу распознать не может. Не указывать же мне, что там в качестве данных пришли переменные?

Старый 10.07.2012, 16:15
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 3  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Я чаще гружу обычный текст, так что свойство это не трогаю, но так как я уверен, что должен получать переменные, то, казалось бы, смело могу пользоваться соответствующим форматом. Но даже в случае IOError я не могу получит IOErrorEvent, так как певым делом вылетает упомянутая мной ошибка. Не красиво как-то...

Старый 10.07.2012, 16:59
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
А почему вы решили, что должны получить IOError, если сервер вам возвращает статус 200 и данные в формате XML? Вы пытаетесь переложить проблемы сервера и корявости его API на плечи клиента.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 10.07.2012, 17:14
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 5  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Цитата:
Сообщение от alatar Посмотреть сообщение
А почему вы решили, что должны получить IOError, если сервер вам возвращает статус 200 и данные в формате XML? Вы пытаетесь переложить проблемы сервера и корявости его API на плечи клиента.
Не совсем. Это два варианта с одинаковым исходом:
- отчет об ошибке серверного скрипта;
- серверный скрипт недоступен (здесь я и должен получить IOError)

Я так понял, что для URLLoader`а любой ответ приемлем, но вот проблема в том, что он сперва пытается сконвертировать ответ согласно значению свойства dataFormat, а потом уже смотрит, что же в нем сказано. Вывод сделал, основываясь на том, что если dataFormat равно URLLoaderDataFormat.TEXT, тогда (если php-скрипт недоступен) я спокойно ловлю IOErrorEvent.

Старый 10.07.2012, 17:58
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Это на самом деле плохая реализация HTTP во Флеше. Данные-то передаются по HTTP, и должны следовать установленым в нем правилам. О том, что данные передаются в формате пара имя-значение должен говорить заголовок content-type application/x-www-form-urlencoded и это никак не зависит от того в каком формате данные послылались, принимать их нужно по факту наличия заголовка.

Но поскольку с этим особо ничего не поделаешь, и очевидно что эти извращения были сделаны by design. Остается вобщем-то выставлять binary и потом парсить самому, но уже наугад, т.как заголовки ответа по какой-то мистической причине плеер не разрешает читать флешке. Ситуация на столько идиотская, что в одно время я даже задумывался о том, чтобы написать человеческую реализацию HTTP используя Socket - но как-то потом не актуально стало.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 10.07.2012 в 18:02.
Старый 10.07.2012, 18:07
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 7  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
2wvxvw
Спасибо за ответ! Я ради интереса перелопатил справку, пересмотрел примеры - все думал, что проблема скорее во мне, а не Флеше. Вы меня успокоили

Старый 10.07.2012, 18:08
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Ситуация на столько идиотская, что в одно время я даже задумывался о том, чтобы написать человеческую реализацию HTTP используя Socket - но как-то потом не актуально стало.
https://github.com/gabriel/as3httpclient
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 10.07.2012, 18:09
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 9  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Но поскольку с этим особо ничего не поделаешь, и очевидно что эти извращения были сделаны by design. Остается вобщем-то выставлять binary и потом парсить самому, но уже наугад, т.как заголовки ответа по какой-то мистической причине плеер не разрешает читать флешке. Ситуация на столько идиотская, что в одно время я даже задумывался о том, чтобы написать человеческую реализацию HTTP используя Socket - но как-то потом не актуально стало.
Так я вот написал, да и не только я, благо несложно. Сокету, оказывается, нужен сокет полиси сервер, то есть просто меняем одно извращение от Адоба на другое.

Старый 10.07.2012, 20:58
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Спасиб, интересная библиотека, надо будет запомнить, жаль автор похоже забросил проект, ну да это такое, мне тоже сейчас ни для чего особо не нужно.

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

Еще есть вариант для заголовков - посылать запросы используя Явасркипт... но тут опять же облом, если бинарные данные обратно отправляют, т.как не передашь их из Яваскрипта особенно.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 10.07.2012 в 21:03.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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