提起HttpService组件管理器中使用itemResponder和AsyncToken的使用如下:
itemResponder:代替急用属性的时间监听器或者addEventListener()方法处理和向ActionScript事件处理发送时间对象。要使用ItemResponder类,首先必须创建自定义事件处理器函数衣橱里RPC请求的result和falut事件,每一个事件处理函数除了接受时间对象还回接受一个AsynToken参数。
private function resultHandler(event:ResultEvent,token:AsyncToken):void
private function faultResultHandler(event:FaultEvent,token:AsyncToken):void
创建ItemResponder对象方法:
var responder:ItemResponder=new ItemResponder(resultHandler,faultResultHandler);
AsyncToken:一种动态对象,开发者通过他可以再运行时向对象添加任意已命名属性。向RPC组件发送的每一个请求多返回一个AsyncToken 类的实例。该实例会在RPC请求的过程中存在于应用程序的内存中,创建请求后,可以任意田间信息跟踪请求的目的后其他重要信息。
具体实现代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script >
<![CDATA[
import mx.collections.ItemResponder;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.AsyncToken;
import mx.rpc.AsyncResponder;
import mx.collections.ArrayCollection;
[Bindable]
private var myData:ArrayCollection;
private var contactService:HTTPService=new HTTPService();
private function getData()
{
contactService.url="data/books.xml" ;
var responder:ItemResponder=new ItemResponder(resultHandler,faultResultHandler);
var token:AsyncToken=contactService.send();
token.addResponder(responder);
}
/**
* 远程请求的处理
*
*/
private function resultHandler(event:ResultEvent,token:AsyncToken):void
{
myData=event.result.data.book;
}
/**
* 远程方法错误的处理方法
*
*/
private function faultResultHandler(event:FaultEvent,token:AsyncToken):void
{
Alert.show(event.fault.faultString,event.fault.faultCode);
}
]]>
</mx:Script>
<mx:Button label="获取数据" click="getData()" x="69" y="268"/>
<!--基于请求的HTTPService处理-->
<mx:DataGrid id="requestHandlerdg" dataProvider="{myData}" x="5" y="0" width="390" height="122"/>
<!--基于事件的HTTPService处理-->
<mx:DataGrid id="clickHandlerdg" dataProvider="{contactService.lastResult.data.book}" x="5" y="130" width="390" height="130"/>
</mx:Canvas>