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));

?

?

相关资料:

ActionScript处理异步事件(一):中文?英文

ActionScript处理异步事件(二):中文?英文

ActionScript处理异步事件(三):中文?英文

当然,解决方法是在英文的评论里找到的啦,哈哈。


[ 点击查看详细]

你可能感兴趣的:(Ajax,应用服务器,Flex,ext,actionscript)