Flex3使用Httpservice与服务器进行异步通讯
最近在学习Flex3。当然,学习一门东西,最快上手的方法,就是拿来做项目。这样当然就是做网站的应用咯,做一个用户后台的Flex版。卡卡。感觉比前段时间研究的Ext好,学习成本好象低很多。
由于原来的项目是使用Ajax实现的,因此做一个Flex版的话,基本上服务器端的接口是不需要修改的,因此相互间的通讯数据是JSON格式。
而一般Flex的入门教程都是使用Httpservice控件的,而使用Remote Object的则比较少。所以暂时就先拿Httpservice练练手吧。
而常见的Httpservice的代码都是这样的:
<mx:HTTPService id="webConnection" resultFormat="text" result="handler(event)">
result属性代表http请求完成后回调的as函数。
但对于我这样的频繁与服务器进行通讯的应用。当然不可能使用这种硬编码的方式。要不页面上就一堆Httpservice控件了,这样不单编码麻烦,而且管理起来也相当麻烦。
后来查找手册,发现有addEventListener和removeEventListener方法可以配对使用。但一个非常麻烦的问题却是removeEventListener方法必须明确提供被删除侦听器的名称,由此就带来一个请求历史维护的问题。想起这个就头大。
只好再找方法,看如何能灵活的绑定侦听器,但又不需考虑删除的方法。
历经N小时的查找之后,终于在一篇旧文章的新评论里,找到解决方法,就是使用Responder控件。最终代码如下:
httpservice.url = "http://www.abc.net/";
httpservice.request = {action: "list"};
var call:Object = httpservice.send();
call.addResponder(new mx.rpc.Responder(handler, null));
相关资料:
当然,解决方法是在英文的评论里找到的啦,哈哈。
- 最近在猛烈学习前端技术开发 - 2008年11月12日 09:12
- 怎么没人想到。。。 - 2008年08月07日 21:03
