是否可以在Flex中执行轻量级REST调用?

时间:2010-12-19 13:17:48

标签: flex actionscript-3 rest remoting

我们正在转换Flex应用程序以使用一些REST API。

mx.rpc.http.HTTPService类添加到代码中时,SWF二进制输出从175KB增长到260KB。这是一个不可接受的打击。

有没有更好的方法从Flex应用程序执行轻量级REST调用?我们最好使用外部接口JS来从那里进行调用吗?

2 个答案:

答案 0 :(得分:6)

flash.net.URLLoader内置于运行时,不会导致文件大小增加。我以前用它作为JSON客户端,所以你不应该有任何麻烦。

下面是一个非常简单的例子。有关其限制的信息,请参阅HTTP_STATUSHTTP_RESPONSE_STATUS的文档。

var request: URLRequest = new URLRequest("http://tempuri.org/service/json");
request.method = "POST";
request.contentType = "application/json";
request.data = JSON.encode(jsonObject);

var loader : URLLoader = new URLLoader(request);

// Only supported by some browsers
loader.addEventHandler(HTTPStatusEvent.HTTP_STATUS, statusCodeReceived);

// AIR only
loader.addEventHandler(HTTPStatusEvent.HTTP_RESPONSE_STATUS, statusCodeReceived);

loader.addEventHandler(Event.COMPLETE, function(ev:Event):void
{
    var responseJson : String = request.data as String;

    var responseJsonObject : String = JSON.decode(responseJson);
});

loader.addEventHandler(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
loader.addEventHandler(IOErrorEvent.IO_ERROR, errorHandler);

答案 1 :(得分:2)

我一直认为这样做的好方法是为浏览器的JavaScript HTTP API XmlHttpRequest创建一个小接口。我从来没有尝试过,但我已经调查过了,看起来它可能相当简单。

这将有助于解决Flash Player的安全限制,使其HTTP支持严重受损。