Не могли бы вы помочь. Я использую приложение django-amf-gateway (http://bitbucket.org/wolever/django-amf-gateway).
Я определил шлюз следующим образом:
from django_amf_gateway import register_amf_service from goserver.models import Game class ChangeService(object): def state(self): game = Game.objects.get(id = 1) return game.move_number register_amf_service('state', ChangeService, [Game])
И когда я назвал сервис из mxml так:
updateService.state(); <mx:RemoteObject id="updateService" endpoint="{Config.updateGateWay}" destination="state"> <mx:method name="update" result="onSuccess(event)" fault="onFault(event)" /> </mx:RemoteObject>
Я получил исключение:
> [RPC Fault > faultString="[MessagingError > message='Destination 'state' either > does not exist or the destination has > no channels defined (and the > application does not define any > default channels.)']" > faultCode="InvokeFailed" > faultDetail="Couldn't establish a > connection to 'state'"] at > mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::invoke()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:263] > at > mx.rpc.remoting.mxml::Operation/http://www.adobe.com/2006/flex/mx/internal::invoke()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\mxml\Operation.as:197] > at > mx.rpc.remoting::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\Operation.as:113] > at > Function/http://adobe.com/AS3/2006/builtin::apply() > at > mx.rpc.remoting.mxml::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\mxml\Operation.as:170] > at > Function/http://adobe.com/AS3/2006/builtin::apply() > at > mx.rpc::AbstractService/http://www.adobe.com/2006/actionscript/flash/proxy::callProperty()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractService.as:290] > at > Game/main()[/Users/oleg/jin/goclub/trunk/goapp/usersList/src/Game.mxml:51] > at > Game/___Game_Application1_creationComplete()[/Users/oleg/jin/goclub/trunk/goapp/usersList/src/Game.mxml:3] > at > flash.events::EventDispatcher/dispatchEventFunction() > at > flash.events::EventDispatcher/dispatchEvent() > at > mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298] > at mx.core::UIComponent/set > initialized()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1169] > at > mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:718] > at > Function/http://adobe.com/AS3/2006/builtin::apply() > at > mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8628] > at > mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8568]
Либо неверно имя метода mx: RemoteObject, либо необходимо обновить код Python:
class ChangeService(object): def update(self): game = Game.objects.get(id = 1) return game.move_number
Обратите внимание на изменение с «состояния» на «обновление».