2009-10-31 5 views
0

Pourriez-vous nous aider? J'utilise l'application django-amf-gateway (http://bitbucket.org/wolever/django-amf-gateway).Django + pyamf: Exception étrange lors de l'appel de la passerelle à partir d'une application ActionScript

Je définis la passerelle de cette façon:

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

Et quand j'ai appelé le service de mxml ainsi:

updateService.state(); 

<mx:RemoteObject id="updateService" endpoint="{Config.updateGateWay}" destination="state"> 
    <mx:method name="update" result="onSuccess(event)" fault="onFault(event)" /> 
</mx:RemoteObject> 

j'ai eu une 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] 

Répondre

0

Soit le mx: le nom de la méthode RemoteObject est incorrect ou le code Python doit être mis à jour:

class ChangeService(object): 
    def update(self): 
     game = Game.objects.get(id = 1) 
     return game.move_number 

Notez le passage de 'state' à 'update'.