![]() |
Зачем URLLoader`у свойство dataFormat
Вроде глупый вопрос, но вот ситуация:
перед началом загрузки пишем Код AS3:
Код:
Error: Error #2101: Строка, переданная в URLVariables.decode(), должна бытьИ не говорите мне: Код:
ипользуй URLLoaderDataFormat.BINARY или URLLoaderDataFormat.TEXTПэ.Эс.: Вместо того, чтобы спокойно отловить IOErrorEvent, я так же получаю этот результат. Так что не обязательно гнать на плохо написаный сервер. Он может быть просто недоступен и уже этим портить и без него неплохую картину. |
Тем не менее, если задать
Код AS3:
Код AS3:
|
Я чаще гружу обычный текст, так что свойство это не трогаю, но так как я уверен, что должен получать переменные, то, казалось бы, смело могу пользоваться соответствующим форматом. Но даже в случае IOError я не могу получит IOErrorEvent, так как певым делом вылетает упомянутая мной ошибка. Не красиво как-то...
|
А почему вы решили, что должны получить IOError, если сервер вам возвращает статус 200 и данные в формате XML? Вы пытаетесь переложить проблемы сервера и корявости его API на плечи клиента.
|
Цитата:
- отчет об ошибке серверного скрипта; - серверный скрипт недоступен (здесь я и должен получить IOError) Я так понял, что для URLLoader`а любой ответ приемлем, но вот проблема в том, что он сперва пытается сконвертировать ответ согласно значению свойства dataFormat, а потом уже смотрит, что же в нем сказано. Вывод сделал, основываясь на том, что если dataFormat равно URLLoaderDataFormat.TEXT, тогда (если php-скрипт недоступен) я спокойно ловлю IOErrorEvent. |
Это на самом деле плохая реализация HTTP во Флеше. Данные-то передаются по HTTP, и должны следовать установленым в нем правилам. О том, что данные передаются в формате пара имя-значение должен говорить заголовок content-type application/x-www-form-urlencoded и это никак не зависит от того в каком формате данные послылались, принимать их нужно по факту наличия заголовка.
Но поскольку с этим особо ничего не поделаешь, и очевидно что эти извращения были сделаны by design. Остается вобщем-то выставлять binary и потом парсить самому, но уже наугад, т.как заголовки ответа по какой-то мистической причине плеер не разрешает читать флешке. Ситуация на столько идиотская, что в одно время я даже задумывался о том, чтобы написать человеческую реализацию HTTP используя Socket - но как-то потом не актуально стало. |
2wvxvw
Спасибо за ответ! Я ради интереса перелопатил справку, пересмотрел примеры - все думал, что проблема скорее во мне, а не Флеше. Вы меня успокоили :) |
Цитата:
|
Цитата:
|
Спасиб, интересная библиотека, надо будет запомнить, жаль автор похоже забросил проект, ну да это такое, мне тоже сейчас ни для чего особо не нужно.
Да, ну это будет работать только для своего сервера - ну так обычно для чужих серверов такое и не нужно, ну или максимум можно свой как прокси использовать... Еще есть вариант для заголовков - посылать запросы используя Явасркипт... но тут опять же облом, если бинарные данные обратно отправляют, т.как не передашь их из Яваскрипта особенно. |
| Часовой пояс GMT +4, время: 19:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.