Django + pyamf:从动作脚本应用程序调用网关时出现奇怪的异常

Posted

技术标签:

【中文标题】Django + pyamf:从动作脚本应用程序调用网关时出现奇怪的异常【英文标题】:Django + pyamf: Strange exception when calling the gateway from actionscript application 【发布时间】:2010-12-11 22:56:27 【问题描述】:

你能帮忙吗? 我正在使用 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 故障 > faultString="[MessagingError > message='目的地'状态' > 不存在或目的地有 > 未定义频道(以及 > 应用程序没有定义任何 > 默认频道。)']" > faultCode="InvokeFailed" > faultDetail="无法建立 > 连接到“状态””] 在 > 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] > 在 > 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] > 在 > mx.rpc.remoting::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\Operation.as:113] > 在 > 函数/http://adobe.com/AS3/2006/builtin::apply() > 在 > mx.rpc.remoting.mxml::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\mxml\Operation.as:170] > 在 > 函数/http://adobe.com/AS3/2006/builtin::apply() > 在 > 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] > 在 > 游戏/main()[/Users/oleg/jin/goclub/trunk/goapp/usersList/src/Game.mxml:51] > 在 > 游戏/___Game_Application1_creationComplete()[/Users/oleg/jin/goclub/trunk/goapp/usersList/src/Game.mxml:3] > 在 > flash.events::EventDispatcher/dispatchEventFunction() > 在 > flash.events::EventDispatcher/dispatchEvent() > 在 > mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9298] > 在 mx.core::UIComponent/set > 初始化()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1169] > 在 > mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:718] > 在 > 函数/http://adobe.com/AS3/2006/builtin::apply() > 在 > mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8628] > 在 > mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8568]

【问题讨论】:

【参考方案1】:

mx:RemoteObject 方法名错误或 Python 代码需要更新:

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

注意从“状态”到“更新”的变化。

【讨论】:

以上是关于Django + pyamf:从动作脚本应用程序调用网关时出现奇怪的异常的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从动作脚本运行终端命令?

动作脚本 3. 如何在角色的底部制作阴影?

从 Flex - mxml(动作脚本)迁移到另一种技术

将变量从动作脚本 3 传递到动作脚本 2

没有动作的 HTML 表单

从操作脚本访问 android 通知服务