2

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

私のシナリオでは、destination 属性と source 属性の値はどうあるべきですか? http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/など、web2py 以外の実装に関する記事をいくつか読みましたが、それらは .../関数に直接マップする URI を持つ代わりに、gateway.php ファイルを使用します。

別の方法として、flash.net.NetConnection を使用してリモート関数を正常に呼び出すことができましたが、私が見つけたドキュメントのほとんどは、これが AMF を実行する古い Flex 3 以前の方法であると見なしています。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);

-ロブ

4

1 に答える 1

1

@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);

-ロブ

于 2009-06-02T14:37:12.250 に答える