Как сделать AS3 Remoting с ColdFusion - PullRequest
0 голосов
/ 17 ноября 2011

Как сделать удаленное взаимодействие с 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 Ответ

2 голосов
/ 17 ноября 2011

Для удаленного взаимодействия с Coldfusion Flex имеет встроенный способ.

1) Необходимо создать проект Flex, указав ColdFusion в качестве сервера

enter image description here

2) Сервер Coldfusion будет иметь по умолчанию все файлы дескрипторов, необходимые для удаленного взаимодействия с Flash.

3) Удаленные объекты используются для связи с компонентами cf

<s:RemoteObject destination="ColdFusion"
    source="com.stackoverflow.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Свойство - это пакет компонента cf из webroot.например, если webroot имеет значение C:\ColdFusion8\wwwroot, а cfc находится в C:\ColdFusion8\wwwroot\com\stackoverflow\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>

EDIT Удаленный объект, который я создалв mxml (для flex) Для создания чистого удаленного объекта ActionScript вам просто нужно сделать следующее:

var ro:RemoteObject=new RemoteObject("ColdFusion");
ro.showBusyCursor=true;
ro.source="com.stackoverflow.testcfc";
var op:AbstractOperation=new AbstractOperation(null, "myFunction");
op.addEventListener(ResultEvent.RESULT, method1_resultHandler);
if(!ro.operations) {
    ro.operations={};
}
ro.operations["myFunction"]=op;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...