Could you please help. I am using the django-amf-gateway application (http://bitbucket.org/wolever/django-amf-gateway).
I defined the gateway this way:
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])
And when I called the service from mxml this way:
updateService.state();
<mx:RemoteObject id="updateService" endpoint="{Config.updateGateWay}" destination="state">
<mx:method name="update" result="onSuccess(event)" fault="onFault(event)" />
</mx:RemoteObject>
I got an exception:
> [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]
Either the mx:RemoteObject method name is wrong or the Python code needs to be updated:
class ChangeService(object):
def update(self):
game = Game.objects.get(id = 1)
return game.move_number
Note the change from 'state' to 'update'.