Использование mx:RemoteObject с помощью декоратора web2py @service.amfrpc

StackOverflow https://stackoverflow.com/questions/927028

Вопрос

Я использую web2py (версия 1.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/, но они используют файл .../gateway.php вместо URI, который напрямую сопоставляется с функцией.

В качестве альтернативы, я смог использовать 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);

-Роб

Это было полезно?

Решение

Я не нашел способа использовать RemoteObject с декоратором @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