mx:RemoteObject を web2py の @service.amfrpc デコレータで使用する
-
06-09-2019 - |
質問
web2py (v1.63) と Flex 3 を使用しています。web2py v1.61 では @service デコレーターが導入されており、コントローラー関数に @service.amfrpc のタグを付けることができます。その後、次を使用してその関数をリモートで呼び出すことができます http://..../app/default/call/amfrpc/[function]
. 。見る http://www.web2py.com/examples/default/tools#services. 。このような関数を呼び出すように Flex 3 をセットアップする方法の例を持っている人はいますか?これまでに私が試したことは次のとおりです。
<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/, ですが、関数に直接マップする URI を持たずに .../gateway.php ファイルを使用します。
あるいは、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);
-ロブ
解決
@service.amfrpc デコレーターで RemoteObject を使用する方法が見つかりませんでした。ただし、NetConnection (最初に投稿したものと同様) を使用して古い ActionScript コードを使用し、それを web2py 側の @service.amfrpc 関数と組み合わせることができます。これはうまくいくようです。最初に共有した NetConnection コードで変更したいことの 1 つは、接続ステータスのイベント リスナーを追加することです。必要に応じてさらにリスナーを追加できますが、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);
-ロブ