Отправка запроса на сервер, получение данных (AS3, PHP)
Добавлено: 30 мар 2011, 21:50
Отправка запроса на сервер, получение данных (AS3, PHP)
Очень часто начинающие хотят отправить данные из флешки на сервер или загрузить во флешку данные с сервера. Всё что нужно начинающим в таком случае - это научиться использовать сервер и изучить ActionScript. Примеры кода из этого урока помогут разобраться.
ВАЖНО! Если вы планируете записывать в базу данные, полученные от пользователя или выводить их для пользователей, то уделите внимание безопасности, иначе ваш код может быть уязвим. Подробнее читайте в теме Безопасность скриптов, защита от инъекций, XSS (php, sql).
Для взаимодействия флеш приложения с сервером, на сервере должен находиться файл crossdomain.xml
Файл должен лежать в корне сайта, например http://flapps.ru/crossdomain.xml
Например, для разрешения обращаться к серверу из приложений вконтакте, crossdomain.xml должен содержать такой код:
При тестировании локально, приложение может получать данные с сервера вне зависимости от существования crossdomain.xml
Если ваше приложение работает локально, а при загрузке вконтакт оно не получает данные, то скорее всего проблема именно в crossdomain.xml
Флеш работает с кодировкой UTF-8. Подгружаемый текст должен быть в этой кодировке. Если вместо русских букв вы видите крякозябли, а цифры и английские буквы отображаются верно, то дело в кодировке. Подробнее в теме Кодировка файлов (UTF-8, Windows-1251).
Примечание: Можно добиться чтобы текст в кодировке cp1251 тоже отображался нормально, но лучше использовать UTF-8.
Получение данных от php скрипта (метод GET)
Пример PHP скрипта
GET запрос лучше использовать когда нужно просто подгрузить какие-то данные.
Если подгружать данные с одной и той же страницы, то может показаться, что приложение не получает новые данные. Дело в кэшировании!
Чтобы избежать кэширования, надо передать в get запросе дополнительный параметр, например случайное число.
C помощью GET запроса можно передать данные php скрипту.
Первый параметр присоединяется с помощью знака "?", остальные с помощью знака "&".
PHP
С помощью GET запроса не стоит передавать большие параметры, данные могут дойти не целиком. Используйте метод POST.
Отправка POST запроса php скрипту, передача параметров
AS3
При отправке данных методом POST, данные не кэшируются, добавлять случайную переменную нет необходимости.
PHP
Если у вас что-то не получается и вы не знаете почему, то посмотрите урок Отладка приложений, взаимодействующих с сервером (Charles).
Очень часто начинающие хотят отправить данные из флешки на сервер или загрузить во флешку данные с сервера. Всё что нужно начинающим в таком случае - это научиться использовать сервер и изучить ActionScript. Примеры кода из этого урока помогут разобраться.
ВАЖНО! Если вы планируете записывать в базу данные, полученные от пользователя или выводить их для пользователей, то уделите внимание безопасности, иначе ваш код может быть уязвим. Подробнее читайте в теме Безопасность скриптов, защита от инъекций, XSS (php, sql).
Для взаимодействия флеш приложения с сервером, на сервере должен находиться файл crossdomain.xml
Файл должен лежать в корне сайта, например http://flapps.ru/crossdomain.xml
Например, для разрешения обращаться к серверу из приложений вконтакте, crossdomain.xml должен содержать такой код:
Код: Выделить всё
<cross-domain-policy><allow-access-from domain="*.vkontakte.ru" /><allow-access-from domain="*.vk.com" /><allow-access-from domain="*.userapi.com"/><allow-access-from domain="*.vk.me"/></cross-domain-policy>
Если ваше приложение работает локально, а при загрузке вконтакт оно не получает данные, то скорее всего проблема именно в crossdomain.xml
Флеш работает с кодировкой UTF-8. Подгружаемый текст должен быть в этой кодировке. Если вместо русских букв вы видите крякозябли, а цифры и английские буквы отображаются верно, то дело в кодировке. Подробнее в теме Кодировка файлов (UTF-8, Windows-1251).
Примечание: Можно добиться чтобы текст в кодировке cp1251 тоже отображался нормально, но лучше использовать UTF-8.
Получение данных от php скрипта (метод GET)
Код: Выделить всё
var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php');loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
Код: Выделить всё
<?echo 'http://flapps.ru';?>
Если подгружать данные с одной и той же страницы, то может показаться, что приложение не получает новые данные. Дело в кэшировании!
Чтобы избежать кэширования, надо передать в get запросе дополнительный параметр, например случайное число.
Код: Выделить всё
var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php' + '?' + Math.random());loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
C помощью GET запроса можно передать данные php скрипту.
Код: Выделить всё
var gid = '17157755';var mess = 'flapps.ru'; var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php' + '?gid=' + gid + '&mess=' + mess + '&' + Math.random());loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
PHP
Код: Выделить всё
<?// получаем параметры$param1 = $_GET['gid'];$param2 = $_GET['mess']; // можно сделать что-то с полученными данными, например вывестиecho $param1;echo $param2;?>
Отправка POST запроса php скрипту, передача параметров
AS3
Код: Выделить всё
var gid = '17157755';var mess = 'flapps.ru'; var loader:URLLoader = new URLLoader();var request:URLRequest=new URLRequest('http://flapps.ru/script.php'); // адрес вашего скриптаrequest.method=URLRequestMethod.POST; var vars:URLVariables = new URLVariables();vars['gid']=gid;vars['mess']=mess; request.data=vars;loader.addEventListener(Event.COMPLETE, onComplete);loader.load(request); function onComplete(event:Event):void { // выводим полученные данные в поле result_tf result_tf.text=loader.data;}
PHP
Код: Выделить всё
<?// получаем параметры$param1 = $_POST['gid'];$param2 = $_POST['mess']; // можно сделать что-то с полученными данными, например вывестиecho $param1;echo $param2;?>
Если у вас что-то не получается и вы не знаете почему, то посмотрите урок Отладка приложений, взаимодействующих с сервером (Charles).