logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

Flash Remoting + ColdFusion + AMFPHP

Colocado por Lucas Marçal na(s) categoria(s): Actionscript 3.0, amfphp, ColdFusion 8, Destaque, Flash Remoting, Tutoriais em 10 30th, 2009 | Sem comentários

Salve pessoal
Historicamente eu sempre trabalhei com ColdFusion isso já tem alguns anos, porém nos últimos 2 anos e venho trabalhando bastante com PHP por motivos óbvios, a falta de programador ColdFusion visto que eu não faça mais todo o processo de desenvolvimento de um site.

Porém essa semana eu tive uma demanda de um site feito em flash que deveria consumir métodos de um CFC (ColdFusion Componente), como eu não fazia isso desde a época que eu trabalhava com AS2 decidi escrever uma nova classe para conexão em AS3 e foi exatamente ai que meus problemas começaram.

Primeiramente eu teria que instalar o ColdFusion 8 na minha maquina e de preferência ele deveria rodar em cima do Apache, para isso eu usei o Tutorial do meu brother Marcio Nakano:
Instalando servidor Apache com Mysql e as linguagens ColdFusion e PHP.

Feito isso (e depois desfeito, pois achei que isso poderia ser a causa do erro que eu descrevo a seguir) agora era a hora de escrever a classe, mas por onde começar, Google é a solução? Não foi bem assim.

O material que fala sobre Flash Remoting + ColdFusion na web é bem fraco e muito confuso sem falar que a grande maioria é em inglês o que dificultou um pouco mais o entendimento já que não sou um expert na língua do “Tio Sam”, abaixo estão listados alguns dos melhores que encontrei:
Delicious Flash Remoting

Foi então que tive a feliz idéia de Twittar essa minha raiva e logo depois recebi uma mensagem do Neto Leal e de Bruno Ribeiro me oferecendo ajuda, na parte do Neto Leal ele me indicou esse link:
Ativando Flash Remoting

Mesmo fazendo o que o link indica o erro ainda persistia foi então que comecei a trocar idéia com o Bruno Ribeiro, depois de algumas dicas e do envio da classe que ele mesmo usa para fazer isso eu consegui conectar e consumir um método do ColdFusion.

Eu sempre digo isso, mas é bom reforçar, na vida uma das melhores coisas é ter amigos e eu agradeço ao Neto Leal e ao Bruno Ribeiro pela ajuda, então nada mais lógico do que eu postar aqui a classe que eu fiz baseada nesse longo caminho percorrido para conseguir conectar o Flash ao ColdFusion e ao AMFPHP, lembrando que essa classe foi baseada na classe do Bruno Ribeiro e não tenho a pretensão de achar que ela é a melhor do mundo, mas pelo menos ela funciona com ColdFusion e AMFPHP, segue o código:

RemotingConexao.as

package lmcosta.remoto.cf
{
	import flash.display.MovieClip;

	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.NetStatusEvent;

	import flash.net.NetConnection;
	import flash.net.ObjectEncoding;
	import flash.net.Responder;
	import nl.demonsters.debugger.MonsterDebugger
	/**
	 * ...
	 * @author lmcosta
	 * @link www.lucasmarcal.com.br/blog - www.brunoribeiro.net
	 * @return
	 * @version 1.0
	 */

	public class RemotingConexao extends MovieClip
	{
		public var _servico    :        NetConnection;
		public var _responder  :        Responder;
		public var _fcnRetorno :        Function;
		public var _cfc        :        String;
		public var _metodo     :        String;
		public var _resultado  :        Object;
		public var debug       :        MonsterDebugger;

		public function RemotingConexao()
		{
			this._responder =                new Responder(resultado, falha);
			this._servico   =                new NetConnection();
			this._servico.objectEncoding =   ObjectEncoding.AMF0;
			this.debug = new MonsterDebugger(this);
			this._servico.connect("http://www.seudominio.com.br/flashservices/gateway");
			MonsterDebugger.trace(this, "Chamou a classe de conexão:");
		}
		/**
		 *
		 * @param	$cfc = String que contém o caminho do CFC
		 * @param	$metodo = String com o nome do método do CFC
		 * @param	$fcnRetorno = Metodo de retorno na referencia dessa classe
		 * @param	$args = Argumentos
		 */
		public function consome($cfc:String = "" , $metodo:String="" , $fcnRetorno:Function = null , $args:Object = null ):void
		{
			MonsterDebugger.trace(this, "Consumindo metodo:");
			var refCFCMetodo:String = $cfc + "." + $metodo;

			this._fcnRetorno = $fcnRetorno;
			this._cfc = $cfc;
			this._metodo = $metodo;

			if ($args == null)
			{
				MonsterDebugger.trace(this, "Chamou sem parametros:");
				this._servico.call.apply(null, [refCFCMetodo, this._responder]);
			}
			else
			{
				MonsterDebugger.trace(this, "Chamou com parametros: " + $args);
				this._servico.call.apply(null, [refCFCMetodo, this._responder].concat($args));
			}

		}
		/**
		 *
		 * @param	f = Objeto que retorna Erros
		 */
		private function falha(f:Object):void
		{
			trace("fault"+f.details);
			trace("fault"+f.description);
		}
		/**
		 *
		 * @param	re = Objeto que retorna os resultados
		 * @return  Retorna o valor que veio do CFC na referencia da classe
		 */
		private function resultado(re:Object):Object
		{
			this._resultado = re;
			return this._fcnRetorno(this._resultado);
		}

	}

}

Consumindo a classe
Para utilizar essa classe você deve criar um novo arquivo no Flash do tipo Actionscript 3.0, depois crie uma classe que no meu caso eu chamei de “Teste.as” e escreva o seguinte:

Teste.as


package
{
	import flash.display.MovieClip;
	import lmcosta.remoto.cf.RemotingConexao;
	/**
	 * ...
	 * @author lmcosta
	 */
	public class Teste extends MovieClip
	{
		public var re:RemotingConexao

		public function Teste()
		{
			trace("Conetando.......")
			this.re =  new RemotingConexao();
			this.re.consome("remotoAS3.componente", "ola", this.resultadoItem, {msg:"Seja Bem vindo"});
		}

		public function resultadoItem(obj:Object):void
		{
			trace("Tudo certo hora de trampar  " + obj)
		}

	}

}

Arquivos do Tutorial

Para utilizar a mesma classe para conectar ao AMFPHP basta você trocar o caminho do Gateway na classe RemotingConexao.as e indicar a classe e o método na classe Teste.as
Gostaria mais uma vez de agradecer ao Bruno Ribeiro e ao Neto Leal pela ajuda e espero que essa classe possa ajudar a todos.
Até a próxima pessoal e sigam-me pelo Twitter



Veja o post original no blog do autor aqui!  

Lucas Marçal

Escrito por Lucas Marçal @ http://www.lucasmarcal.com.br/blog/
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» Novos desafios para minha carreira!
» Flash Remoting + ColdFusion + AMFPHP
» Habilitado 3G e MMS da OI no Motorola Milestone

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2795 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com