質問

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

-ロブ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top