Опубликован: 23.12.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 14:

Работа флэш-программ в Internet

URL-кодированные строки переменных

Как мы уже говорили, при отправке на сервер переменные специальным образом упаковываются в строчку. Нужно ли нам знать о том, как именно выглядит такая строка? Оказывается, да, поскольку в том же самом виде сервер может пересылать какие-то данные нашему ролику по его запросу. Более того, данные не обязательно должны генерироваться сервером непосредственно по запросу, они могут быть просто помещены в файл, который ваш ролик будет загружать. Какие именно методы классов и глобальные функции могут загружать данные, мы обсудим чуть позже, а пока разберемся с форматом.

Итак, данные (говоря иначе, параметры), отправляемые на сервер и приходящие с сервера, имеют следующий вид: строка с данными разбита на небольшие блоки, каждый из которых описывает имя и значение одного параметра (переменной). Переменная и ее значение разделяются знаком равенства ( = ). Блоки отделяются друг от друга символом &. В переменных и их значениях допускается использовать только латинские буквы (прописные и строчные) и цифры. Всевозможные знаки препинания (в том числе подчеркивание и пробел), а также русские буквы (или другие символы из верхний части ASCII-таблицы) заменяются на их шестнадцатеричный ASCII-код, перед которым ставится знак %. Например, если на сервер посылаются переменные а (имеющая значение 14), b (равная 17) и programName (значением которой является строка " Flash MX "), то эти данные будут скомпонованы в строку " a=14&b=17&program=Flash%20MX ". Этот способ кодирования (иногда называемый url-кодированием ) является стандартным и данные, закодированные так, имеют тип MIME application/x-www-form-urlencoded. (На всякий случай поясним, что типом MIME называется представленная в определенном стандартном виде информация о том, как именно веб-сервер, браузер, почтовый клиент, и прочие интернет-ориентированные программы должны воспринимать некоторую порцию данных. Аббревиатура MIME расшифровывается как Multipurpose Internet Mail Extensions - трудно представить, но когда-то данные, о которых нужно было специально сообщать, как их воспринимать, попадались в основном в аттачментах электронной почты.)

Операция замены символов, которые не являются латинскими алфавитно-цифровыми, на их шестнадцатеричный код, предваренный процентом, в случае надобности может быть выполнена и внутри флэш-программы при помощи функции escape (string_to_escape). Обратное преобразование выполняется функцией unescape (string_to_unescape). Так что при помощи функции escape вы можете посмотреть на то, во что превращаются ваши строки при посылке на сервер. Разумеется, бывают случаи, когда применять эти функции приходится не только из любопытства. В частности, бывает, что нужно сформировать внутри вашего ролика целый URL вместе с параметрами, передаваемыми в конце URL (после вопросительного знака) GET -методом. И потом этот URL еще куда-нибудь переслать для дальнейшей обработки. Вот тогда и пригождается функция escape. На всякий случай выскажем теперь в явном виде то, что ранее в этом абзаце молчаливо подразумевалось: при отправке переменных на сервер вызывать escape не нужно, все делается автоматически.

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

Во-первых, хотя формат остается в общих чертах тем же, ограничения гораздо слабее. А именно, в значениях переменных допускается использование русских букв, пробелов, знаков пунктуации и даже переводов строк. Фактически, проблема возникнет лишь в том случае, если в значении переменной встретятся амперсанд ( & ), процент или знак плюс, который используется в url-кодированных строках для замены пробела (сокращение вместо %20 ). Вместо них все-таки придется поставить процент и шестнадцатеричный код. Есть также тонкость, связанная с использованием русского (или другого национального) алфавита: вам придется сохранять файл в Unicode (годится и UTF-8), иначе нужные символы не прочитаются.

Во-вторых, тот факт, что Флэш нормально воспринимает практически все символы в значении переменной (даже без специального кодирования) способен доставить некоторые неприятности, если вы захотите аккуратно отформатировать ваши переменные в столбик. Переводы строк Флэш воспримет как части переменных, что может довольно сильно мешать. Придется либо вручную отрезать эти переводы строк внутри флэш-программы, либо применить следующий трюк: в конце строк поставить амперсанды, как и в начале. Получится нечто вроде

&a=14&
&b=17&
&programName=Flash MX&

Вот теперь все переменные будут восприняты правильно.

алексеи федорович
алексеи федорович
Беларусь, рогачёв
Тамара Ионова
Тамара Ионова
Россия, Нижний Новгород, НГПУ, 2009