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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Что за userID и password ?
Ну это у меня для авторизации используется. Туда данные из соцсетей записываются. Отправку пароля и userId можно вообще убрать, если она не нужна. Просто в моем случае она используется каждый раз.

Вот упрощенный вариант:
Код AS3:
package  {
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	import flash.net.URLVariables;
 
	public class Packet extends EventDispatcher {
 
		public static const HOST:		String 		= "http://server.com/";
		public static const SCRIPT:		String 		= "call.php";
 
		private var _callback:		Function 	= null;
 
		/**
		 * 
		 * @param	называние метода, который нужно вызывать на сервере, передается в 
		 * POST с ключом method
		 * @param	callback метод который вызывается после прихода ответа от сервера
		 * должен принимать один параметр типа Object
		 */
		public function Packet(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.VARIABLES;
			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(Packet.HOST + Packet.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);
			trace("INPUT / OUTPUT ERROR");
		}
 
		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);
			var data:Object = e.target.data as Object;
			trace("PACKET DATA:", this, unescape(String(data))); 
			if (_callback != null) {
				_callback.call(null, data);
			}
		}
	}
}