我用这种方式定义了网关:
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]
答案 0 :(得分:0)
mx:RemoteObject方法名称错误或需要更新Python代码:
class ChangeService(object):
def update(self):
game = Game.objects.get(id = 1)
return game.move_number
请注意从“州”更改为“更新”。