Pregunta

Estoy usando web2py (v1.63) y Flex 3. v1.61 web2py introdujo los decoradores @Service, que le permiten etiquetar una función de controlador con @ service.amfrpc. A continuación, puede llamar a esa función de forma remota utilizando http://..../app/default/call/amfrpc/[function]. Ver http://www.web2py.com/examples/default/tools#services. ¿Alguien tiene un ejemplo de cómo se configure una Flex 3 para llamar a una función como esta? Esto es lo que he probado hasta ahora:

<mx:RemoteObject id="myRemote" destination="amfrpc" source="amfrpc"
    endpoint="http://{mysite}/{myapp}/default/call/amfrpc/">
    <mx:method name="getContacts"
        result="show_results(event)"
        fault="on_fault(event)" />
</mx:RemoteObject>

En mi caso, lo que debería ser el valor de los atributos de destino y de origen? He leído un par de artículos sobre las implementaciones no web2py, como http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/ , pero utilizan un archivo ... / gateway.php en lugar de tener un URI que corresponde directamente a la función.

Por otra parte, he podido utilizar flash.net.NetConnection llamar éxito mi función remota, pero la mayor parte de la documentación que he encontrado considera que se trata de la manera antigua, pre-Flex 3 de hacerlo AMF. Ver http://pyamf.org/wiki/HelloWorld/Flex . Aquí está el código NetConnection:

gateway = new NetConnection();
gateway.connect("http://{mysite}/{myapp}/default/call/amfrpc/");
resp = new Responder(show_results, on_fault);
gateway.call("getContacts", resp);

-Rob

¿Fue útil?

Solución

No he encontrado una manera de utilizar un RemoteObject con el decorador @ service.amfrpc. Sin embargo, puedo usar el viejo código ActionScript mediante un NetConnection (similar a lo que he publicado originalmente) y un par que con una función @ service.amfrpc en el lado web2py. Esto parece que funciona bien. La única cosa que usted quiere cambiar en el código NetConnection que compartió por primera vez, es la adición de un detector de eventos para el estado de la conexión. Se pueden añadir más oyentes si se siente la necesidad, pero me encontré con que NetStatusEvent era imprescindible. Este estado se disparará si el servidor no está respondiendo. Usted establecimiento de conexión se vería así:

gateway = new NetConnection();
gateway.addEventListener(NetStatusEvent.NET_STATUS, gateway_status);
gateway.connect("http://127.0.0.1:8000/robs_amf/default/call/amfrpc/");
resp = new Responder(show_results, on_fault);
gateway.call("getContacts", resp);

-Rob

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top