Passando argumentos para o AMFPHP usando o FLEX 2.0
Depois de saber como carregar dados de um banco de dados usando o AMFPHP com FLEX 2.0, surgiu uma dúvida, como passar argumentos para o AMFPHP? Depois de ler o artigo do Mike Potter vi que é muito simples.
Primeiro a nossa classe RemotingConnection que extende a NetConnection
-
package {
-
import flash.net.NetConnection;
-
import flash.net.ObjectEncoding;
-
-
public class RemotingConnection extends NetConnection {
-
public function RemotingConnection(sURL:String){
-
objectEncoding = ObjectEncoding.AMF0;
-
if(sURL){
-
connect(sURL);
-
}
-
}
-
public function AppendToGatewayUrl(s:String):void{
-
-
}
-
-
}
-
}
Importamos essa classe para nossa aplicação e nos conectamos com o AMFPHP. Dessa vez colocarei dentro de um arquivo mxml o action script que chamara o AMFPHP,
-
<mx :Script>
-
<![CDATA[
-
import flash.net.Responder;
-
public var gateway:RemotingConnection;
-
public function initApplication():void{
-
gateway=new RemotingConnection("http://localhost/flashservices/gateway.php");
-
}
-
public function get(Option:String):void{
-
var remote_str:String = Option; // string remota
-
gateway.call("teste.ola",new Responder(onResult,onFault),remote_str);
-
}
-
public function onResult(result:*):void{
-
output.text = result;
-
}
-
public function onFault(fault:*):void{
-
output.text = fault;
-
}
-
]]>
-
</mx>
Note que na seguinte linha:
-
gateway.call("teste.ola",new Responder(onResult,onFault),remote_str);
O método call receberá um parametro a mais "remote_str", esse é justamente o que será enviando para o AMFPHP, sendo por padrão um array. A primeiro parametro "teste.ola" são justamente o nome da classe e o metodo a ser invocado.
A classe em PHP é a seguinte:
Você pode ver o resultado nesse link
Segue o codigo mxml completo.
5 Comments
Other Links to this Post
RSS feed for comments on this post. TrackBack URI



By wendel, August 21, 2006 @ 18:55
Hum… agora, passar estrutura de dados complexas, como objetos, como te falei… será que é possÃvel?
xoh tentar aqui…
By wendel, August 21, 2006 @ 19:07
fiz uns testes e é possÃvel passar argumentos complexos para o AMF, isso é legal d+, pq agora não preciso mais usar a JSON,
[as]
var gatewayArgs:Array = new Array();
gatewayArgs[0] = {‘a’:'a’,'b’:'b’};
gatewayArgs[1] = {‘a’:'a’,'b’:'b’};
gateway = new RemotingConnection(gatewayUrl);
gateway.call( “Dashboard.PingBack”, new Responder(resultHandler,onFault),gatewayArgs);
[/as]
[code]
[SWF] /projetos/RIA/app/Dashboard/bin/Dashboard-debug.swf - 1.247.125 bytes after decompression
--EVENT--
(Array)#0
[0] (Object)#1
a = "a"
b = "b"
[1] (Object)#2
a = "a"
b = "b"
[/code]
By FlexMachine, October 8, 2006 @ 17:31
A tecnologia de comunicação do flex com o amfphp realmente é bem mais rápida do que com o url request, mas o artigo não está explicando direito, e nem expecifica os nomes das classes, o que dificulta para quem esta começando.
Mas o resto esta show!
viva o flex!
By VÃtor Hugo, October 16, 2006 @ 12:11
Bem estou fazendo testes aqui passando argumento para o php, porem que só estou conseguindo passar valores numericos. String não passa.
A estrutura no Flex é a seguinte:
gateway.call( “teste.ola” , new Responder(onResult,onFault) , “testando…” );
e no PHP eu pego:
function ola($dado)
{
return $dado;
}
Eu não sei como é a estrutura da variavel $dado no php, alguem sabe? Porque pode ser um array e por isso nao estou conseguindo pegar.
Um abraço.
By Leonardo França, October 16, 2006 @ 12:32
tente assim:
var texto:Array = new Array(“testando….”);
gateway.call( “teste.ola� , new Responder(onResult,onFault) , texto);
no php vc pegará assim:
function ola($dado=array())
{
return $dado[0];
}