Flash as3 y Bases de Datos post


Por dificil que parece , realmente es muy sencillo…

Flash puede enviar variables a parametros de servicios que el servidor esta esperando..  y este mismo servicio hace una devolucion que debemos obtener , sea para saber si esta “OK” , hubo ERROR o si … simplmente puede devolver informacion que debemos mostrar al usuario..

Por ejemplo:
Podemos enviar el Nombre y Apellido a un servicio el cual nos devuelve un XML con informacion que luego nosotros mostraremos en el front (siempre por flash) y de esta manera estariamos llevando y trayendo informacion del celular.. dependiendo del proyecto es importante poner un encrypter , pero eso es otra historia…

 

aca dejo un ejemplo simplificado de una funcion que envia un ID a la base de datos…  , el servicio nos devuelve simepre un XML que dice:  <status>0</status> (por ejemplo si esta ok! … o bien 1, si el usuario ya existe y si ya existe.. enviarnos este xml <status>1</status>Diego Burgos<nombre></nombre> … en este ejemplo “0” (cero) seria que recibio el ID perfecto… y que no existe ese usuario, con lo cual le podemos mostrar un formulario para enviar el resto de los datos verdad? o bien.. “1”  es que ya existe y nos devuelve un xml con toda su info…

es simple…

 

 

 

public function login(facebookId:String):void {

var urlVars        :URLVariables = new URLVariables();
var urlRequ        :URLRequest = new URLRequest (“http://www.controlz.com.ar/tuServicioDeLogin.aspx&#8221;);    // < — URL del servicio

urlRequ.method = URLRequestMethod.POST;   // < — Tipo de metodo de envio

//setVaribles para enviar
urlVars.facebookId = facebookId;    // < — varible con propiedades (seria una variable a la cual le agregamos todas las propiedades que querramos… asi como le enviamos facebookId (String que espera nuestro servicio) podriamos enviar muchas mas abajo comentadas
//  urlVars.otraVariableMAs = “loqueSea” ;

urlRequ.data = urlVars;     // < — indicamos que es lo que enviamos
// envio y espero
var urlLoad:URLLoader = new URLLoader();
urlLoad.load(urlRequ);
urlLoad.addEventListener(Event.COMPLETE, onSendCompleteLogin);    // < —  listeners uno para cuando se completa el envio
urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);      // < —   listeners por si existe un error
}

 

 

private function onSendCompleteLogin (event:Event) {   // < —  esta es la funcion de callBack es decir la funcion que se ejecuta al regreso de Complete
var strToXML:String = “<xmlFist>”+event.target.data+”</xmlFist>”;    // < —  lo convertimos en XML (si queremos podemos agregarles nodos extras como este caso, pero no hace falta segun el formato de xml q devuelva el servidor).
var objetoTipoXML:XML = new XML(strToXML);
////trace(“onSendComplete”, strToXML);
analyzerData(objetoTipoXML, ServiceToSimpleEvent.LOGIN);     // < —  una vez convertido en XML ejecuto otra funcion que analize, recorra y tome los datos que necesite del XML (que es la respues del servidor).

}

 

 

private  function analyzerData(objetoTipoXML:XML, referenceService:String):void {   // < — aqui analizamos el XML…  el PRIMER PARAMETRO es el objeto xml a recorrer y el SEGUNDO es una referencia del servicio  ya podemos usar esta fnc para varios serv.

////trace(“devolucion analizada:”);

var referenceService:String = referenceService;
var status:String;
var description:String;

for each(var nodo:XML in objetoTipoXML){    // < —  En este caso estoy tomando los nodos Status y Description que me devolvia el servidor.
trace(“a:”,nodo.Status);
status = nodo.Status
trace(“b:”,nodo.Description);
description = nodo.Description
trace(“c:”,referenceService);
}

dispatchEvent(new ServiceToSimpleEvent(referenceService,status,description)); // < —  finalmente enviamos un Evento con la informacion regida para hacer con el , lo que querramos…  (abajo pongo una funcion para escuchar ese evento y ver como tomamos esa info)

}

 

private function loginHandlerPostService (event:ServiceToSimpleEvent):void{ // < —   Si escucho este evento, tengo la informacion haciendo lo siguiente.
//trace(“Status: “,event.statusData);
//trace(“Descripcion:”,event.descriptionData);

var status:String = event.statusData;
var descripcion:String = event.descriptionData;   // < —  tengo 2 variables status y description y en base a esto pueedo hacer los IF necesario!

if (event.statusData == ServiceToServices.RESPONSE_VALIDATION_DATA_BASE){    //2
//trace(“usuario NO EXISTE:  ” , descripcion , “:::::::::: AL FORMULARIO ::::::::::”);

changeScreenShowForm();
formulario.addEventListener(ControlStatusAppEvents.SOCIAL_NETWORL,gotoHome);

}else if(event.statusData == ServiceToServices.RESPONSE_SUCCESS){ // 0 // usuario ya registrado devuelve token:
//trace(“usuario EXISTE:  ” , descripcion , “:::::::::: PASA A LA HOME ::::::::::”);
ServiceToServices.USER_UID = descripcion;
gotoHome();

}else {
//var msgBoxRESPONSE_SUCCESS:CustomMessageBox = new CustomMessageBox(“Ups!”, descripcion, MessageBoxType.OK_ONLY)
}

}

 

———————– > recordar al copiar el codigo cambiar el tipo de comillas para que as3 lo interprete..

 

este es un ejemplo mas sencillo directamente en el FLA sin clase.. lo idea es tener un singleton con la clase de los servicios para accederla de cualquier lado..!

 

http://www.controlz.com.ar/di3blog/as3/ServiciosAs3-envioPost.rar

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: