Actionscript 3 如何在纯AS3应用程序中创建RemoteService
我想从我的纯AS3应用程序进行远程服务调用。 对于纯AS3,RemoteObject类不可用。 有人能帮我解决吗 谢谢,Actionscript 3 如何在纯AS3应用程序中创建RemoteService,actionscript-3,apache-flex,flex3,Actionscript 3,Apache Flex,Flex3,我想从我的纯AS3应用程序进行远程服务调用。 对于纯AS3,RemoteObject类不可用。 有人能帮我解决吗 谢谢, 苏得什这是我为此写的一节课。我在每个项目上都使用它,所以我不必再去想它了 public class ServiceCaller extends EventDispatcher { private static var s__instance:ServiceCaller; private var m__netConnection:NetConnection;
苏得什这是我为此写的一节课。我在每个项目上都使用它,所以我不必再去想它了
public class ServiceCaller extends EventDispatcher
{
private static var s__instance:ServiceCaller;
private var m__netConnection:NetConnection;
public function ServiceCaller()
{
var l__tempConnection:NetConnection = new NetConnection();
l__tempConnection.objectEncoding = ObjectEncoding.AMF3;
m__netConnection = new NetConnection();
m__netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
m__netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
m__netConnection.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
public function connect(i__url:String):void
{
m__netConnection.connect(Model.instance.config.gatewayUrl);
}
private function netStatusHandler(i__event:NetStatusEvent):void
{
trace(i__event.info.code);
}
private function statusHandler(i__object:Object):void
{
for (var l__key:String in i__object)
trace(l__key, i__object[l__key]);
CursorManager.removeBusyCursor();
}
private function securityErrorHandler(i__event:SecurityErrorEvent):void
{
throw new Error("securityErrorHandler: " + i__event.toString());
}
private function ioErrorHandler(i__event:IOErrorEvent):void
{
throw new Error("ioErrorHandler: " + i__event.toString());
}
public function callService(i__name:String, i__listener:Function, ...arguments):void
{
m__netConnection.call.apply(m__netConnection, [i__name, new Responder(i__listener, statusHandler)].concat(arguments));
}
static public function get instance():ServiceCaller
{
if (!s__instance)
s__instance = new ServiceCaller();
return s__instance;
}
static public function set instance(value:ServiceCaller):void
{
s__instance = value;
}
}
要使用它,您必须首先调用一次ServiceCaller.instance.connect(“网关URL”)代码>然后每次需要通话时:
ServiceCaller.instance.callService("serviceName", onResult, param1, param2);
onResult
是一个回调函数,它将结果作为参数获取。您可以根据服务需要添加任意数量的参数。只需使用flash.net.NetConnection。。。检查call()方法和flash.net.Responder类