سؤال

أنا أستخدم web2py (v1.63) و flex 3. web2py v1.61 قدمت decorators @ service، والذي يسمح لك بوضع علامة على وظيفة وحدة تحكم مع @ service.amfrpc. يمكنك بعد ذلك استدعاء هذه الوظيفة باستخدام عن بعد http://..../app/default/call/amfrpc/[function]. وبعد يرى http://www.web2py.com/examples/Default/tools#services.. وبعد هل لدى أي شخص مثالا على كيفية إعداد المرن 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/, ، ولكن يستخدمون ملف ... / Gateway.php بدلا من وجود URI الذي يقوم بالخرائط مباشرة إلى الوظيفة.

بدلا من ذلك، تمكنت من استخدام Flash.net.netConnection لاستدعاء دئتك عن بعد بنجاح، ولكن معظم الوثائق التي وجدتها تعتبر هذه الطريقة القديمة، ما قبل المرن الثالثة للقيام 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);

-

هل كانت مفيدة؟

المحلول

لم أجد طريقة لاستخدام requotoobject مع decorator @ service.amfrpc. ومع ذلك، يمكنني استخدام رمز ActionScript الأقدم باستخدام NetConnection (على غرار ما نشرته في الأصل) وزوج ذلك مع وظيفة @ service.amfrpc على جانب Web2py. تبدو أنها تعمل جيدا. الشيء الوحيد الذي تريد تغييره في رمز 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);

-

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top