2009-05-29 81 views
2

我使用的web2py(v1.63)和Flex 3的web2py v1.61介绍了@服务装饰,它允许你标记一个控制器功能与@ service.amfrpc 。然后可以调用远程使用http://..../app/default/call/amfrpc/[function]该功能。见http://www.web2py.com/examples/default/tools#services。有没有人有你如何设置Flex 3来调用这样的功能的例子?这是我到目前为止所尝试的:使用MX:RemoteObject的使用的web2py的@ service.amfrpc装饰

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

在我的方案中,目标和源属性的值应该是什么?我看过一对夫妇对非web2py的实现物品,如http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/,但他们使用.../gateway.php文件而不是一个URI直接映射到的功能。

或者,我已经能够使用flash.net.NetConnection来成功调用我的远程函数,但是我发现大多数文档都认为这是旧的,Flex 3之前的AMF方式。请参阅http://pyamf.org/wiki/HelloWorld/Flex。下面是的NetConnection代码:

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

-Rob

回答

1

我还没有找到一种方法,使用与@ service.amfrpc装饰一个RemoteObject。不过,我可以用用的NetConnection(类似于我最初发布)旧ActionScript代码和一对与web2py的侧@ service.amfrpc功能。这似乎工作正常。有一件事,你想在我原先共享的NetConnection代码改变,是增加的事件侦听器的连接状态。您可以添加更多的听众,如果你觉得有必要,但我发现NetStatusEvent是必须的。如果服务器没有响应,则会触发此状态。您连接建立会是什么样子:

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