Question

J'utilise web2py (v1.63) et Flex 3. v1.61 de web2py a présenté les décorateurs de @service, qui vous permettent de marquer une fonction de contrôleur avec @ service.amfrpc. Vous pouvez ensuite appeler cette fonction à distance en utilisant http://..../app/default/call/amfrpc/[function]. Voir http://www.web2py.com/examples/default/tools#services. Quelqu'un at-il un exemple de la façon dont vous mettre en place un Flex 3 pour appeler une fonction comme celui-ci? Voici ce que je l'ai essayé jusqu'à présent:

<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>

Dans mon scénario, quelle devrait être la valeur des attributs source et de destination? J'ai lu quelques articles sur les implémentations non-web2py, tels que http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/ , mais ils utilisent un fichier ... / gateway.php au lieu d'avoir un URI qui correspond directement à la fonction.

Sinon, je suis en mesure d'utiliser flash.net.NetConnection pour appeler avec succès ma fonction à distance, mais la plupart des documents que j'ai trouvé considère que cela l'ancienne, façon pré-Flex 3 de faire de l'AMF. Voir http://pyamf.org/wiki/HelloWorld/Flex . Voici le code NetConnection:

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

-Rob

Était-ce utile?

La solution

Je ne l'ai pas trouvé un moyen d'utiliser un RemoteObject avec le @ décorateur service.amfrpc. Cependant, je peux utiliser le code ActionScript en utilisant un ancien NetConnection (semblable à ce que j'ai posté à l'origine) et une paire qui avec une fonction @ de service.amfrpc sur le côté web2py. Cela semble fonctionner très bien. La seule chose que vous voulez changer dans le code NetConnection je partageais l'origine, ajoute un écouteur d'événement pour l'état de connexion. Vous pouvez ajouter plus d'auditeurs si vous sentez le besoin, mais je trouve que NetStatusEvent était un must. Ce statut sera déclenché si le serveur ne répond pas. mis en place votre connexion ressemblerait à ceci:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top