Tengo 2 semanas intentando hacer conectar el nuevo Zend_AMF_Server y Flex 3, pero no he podido.
Ya intente 3 tutoriales y no me salen
Tuto uno: http://framework.zend.com/wiki/display/ZFPROP/Zend_Amf+-+Wade+Arnold#Zend_Amf-WadeArnold-8.UseCases
Tuto dos: http://framework.zend.com/manual/en/zend.amf.server.html
Tuto tres: http://corlan.org/2008/11/13/flex-and-php-remoting-with-zend-amf/
En los cuales o me deja colgado con la peticion, o me dice que se desconecta antes de recibir respuesta, o me sale el error numero 0.
No se que es lo que estoy haciendo mal.
Primero copio la libreria Zend (completa).
Hize una clase HelloWorld con un metodo say.
Código PHP :
<?php class HelloWorld { /** * Say hello! * * @param string $sMessage * @return string **/ public function say($sMessage) { $date = getdate(); return 'You said: ' . $sMessage .' on '.$date[weekday]; } } ?>
Instancie el Zend_AMF_Server y agrege la clase HelloWorld. Si ejecuto lo que seria mi endpoint "zendamf01.php" me sale "Zend AMF Endpoint" (Me imagino que esta correcto)
Código PHP :
<?php require_once 'Zend/Amf/Server.php'; require_once 'include/services/HelloWorld.php'; // Instantiate server $server = new Zend_Amf_Server(); $server->setClass('HelloWorld'); // Handle request echo $server->handle(); ?>
Luego hago mi Proyecto de Flex
Código XML :
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:RemoteObject id="myservice" fault="faultHandler(event)" showBusyCursor="true" source="HelloWorld" destination="zend"> <mx:method name="say" result="resultHandler(event)" /> </mx:RemoteObject> <mx:Script> <![CDATA[ import mx.managers.CursorManager; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; private function faultHandler(fault:FaultEvent):void { CursorManager.removeBusyCursor(); trace("code:\n" + fault.fault.faultCode + "\n\nMessage:\n" + fault.fault.faultString + "\n\nDetail:\n" + fault.fault.faultDetail); } private function resultHandler(event:ResultEvent):void { response_txt.text = event.result.toString(); } ]]> </mx:Script> <mx:TextInput x="10" y="20" id="server_txt" text="Connect to Zend Amf" /> <mx:TextArea x="10" y="50" id="response_txt" width="278"/> <mx:Button x="178" y="20" label="Send to Server" id="send_btn" click="myservice.say(server_txt.text)"/> </mx:Application>
y como dicen hize mi services-config.xml
Código XML :
<?xml version="1.0" encoding="UTF-8"?> <services-config> <services> <service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage"> <destination id="zend"> <channels> <channel ref="my-zend"/> </channels> <properties> <source>*</source> </properties> </destination> </service> </services> <channels> <channel-definition id="my-zend" class="mx.messaging.channels.AMFChannel"> <endpoint uri="http://localhost/zendamf/zendamf01.php" class="flex.messaging.endpoints.AMFEndpoint"/> </channel-definition> </channels> </services-config>
Le agrege al compilador las opciones y cuando ejecuta o me deja colgado, o me dice que se desconecto antes de recibir la respuesta o me regresa el error numero 0
Que hago?
Gracias a todos por su ayuda