如何使用 ColdFusion 进行 AS3 远程处理

Posted

技术标签:

【中文标题】如何使用 ColdFusion 进行 AS3 远程处理【英文标题】:How to do AS3 Remoting with ColdFusion 【发布时间】:2011-11-17 05:52:34 【问题描述】:

如何使用coldfusion进行远程处理,有人可以帮我吗?

我有课

package 
   
import flash.display.*;
import flash.events.*;
import flash.net.*;

public class Remoting extends MovieClip

    private var rs:NetConnection;

    public function Remoting():void
    
        call_mc.buttonMode=true;
        call_mc.useHandCursor=true;
        call_mc.addEventListener(MouseEvent.CLICK, OnClick);
    

    private function OnClick(e:MouseEvent):void
    
        rs = new NetConnection("http://localhost/amfphp/gateway/");
        var responder:Responder = new Responder(onResult, onFault);
        rs.call("HelloWorld.SayHello", responder);
    

    private function onResult(result:Object):void
    
        trace(result);
    

    private function onFault(fault:Object):void
    
        trace(fault);
    
       
 

发生错误

            Error opening URL 'http://localhost/amfphp/gateway/'
            Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed
at Remoting/OnClick()

谁能告诉我这是怎么回事

提前致谢!

【问题讨论】:

【参考方案1】:

要使用冷融合进行远程处理,flex 有一个内置的方法。

1) 您需要创建一个 Flex 项目,指定 ColdFusion 作为服务器

2) 默认情况下,coldfusion 服务器将拥有 Flash 远程处理所需的所有描述符文件。

3) RemoteObjects 用于与 cf 组件进行通信

<s:RemoteObject destination="ColdFusion"
    source="com.***.testcfc"
    showBusyCursor="true"
    id="ro">
        <s:method name="myFunction"
           result="method1_resultHandler(event)">
                <s:arguments>
                    <arg1 />
                    <arg2 />
                    <!-- and so on -->
                </s:arguments>
        </s:method>
</s:RemoteObject>

source 属性是来自 webroot 的 cf 组件的包。 例如如果 webroot 是 C:\ColdFusion8\wwwroot 并且 cfc 位于 C:\ColdFusion8\wwwroot\com\***\testcfc.CFC 那么上面的 source 值是正确的

4) 调用 remoteObject 方法的代码是:

protected function sendRequest(event:FlexEvent):void 
    var op:AbstractOperation=ro.getOperation("myFunction");
    op.arguments=arg1: "someValue", arg2: 100;
    op.send();
 

5) 结果处理程序会是这样的

protected function method1_resultHandler(event:ResultEvent):void 
    //return value of cffunction in event.result
    event.result;

6) cfc 看起来像

<cfcomponent>
    <cffunction name="myFunction" access="remote" returntype="string">
        <cfargument name="arg1" type="string" required="yes">
        <cfargument name="arg2" type="numeric" required="yes">
        <cfreturn arg1 & ToString(arg2)>
    </cffunction>
</cfcomponent>

编辑 我创建的 remoteObject 在 mxml 中(用于 flex) 要创建一个纯 ActionScript 远程对象,您只需要这样做:

var ro:RemoteObject=new RemoteObject("ColdFusion");
ro.showBusyCursor=true;
ro.source="com.***.testcfc";
var op:AbstractOperation=new AbstractOperation(null, "myFunction");
op.addEventListener(ResultEvent.RESULT, method1_resultHandler);
if(!ro.operations) 
    ro.operations=;

ro.operations["myFunction"]=op;

【讨论】:

您可以查看help.adobe.com/en_US/flashbuilder/using/…了解更多详情 @SwatiSingh 纯 AS3 方法适用于 Flash 只有这行“localhost/amfphp/gateway”有问题,你能告诉我这里有什么问题吗?' @SwatiSingh 查看flashauthoring.blogspot.com/2008/10/… 您需要从sdkroot\framework\libs 文件夹中导入rpc.swc @SwatiSingh 你的 cmets 没有加载,所以前一个应该在你的 localhost/amfphp 评论之前

以上是关于如何使用 ColdFusion 进行 AS3 远程处理的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ColdFusion 中对结构数组进行排序

如何在 ColdFusion 中使用 C#.NET 程序集?

使用 ColdFusion 将 Access 数据导入 SQL Server

as3 air无法连接远程服务器

Coldfusion - JEE 安装 - JVM 参数哪个以及如何?

如何在 ColdFusion 中用 AJAX 替换 iframe