我们正在转换Flex应用程序以使用一些REST API。
将mx.rpc.http.HTTPService
类添加到代码中时,SWF二进制输出从175KB增长到260KB。这是一个不可接受的打击。
有没有更好的方法从Flex应用程序执行轻量级REST调用?我们最好使用外部接口JS来从那里进行调用吗?
答案 0 :(得分:6)
flash.net.URLLoader
内置于运行时,不会导致文件大小增加。我以前用它作为JSON客户端,所以你不应该有任何麻烦。
下面是一个非常简单的例子。有关其限制的信息,请参阅HTTP_STATUS
和HTTP_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支持严重受损。