的HTTPService的AsyncToken和AsyncResponder例子 [英] HTTPService AsyncToken and AsyncResponder example
问题描述
我在哪里可以找到它实现由标记的AsyncToken和AsyncResponder异步调用中的HTTPService Flex应用程序的例子吗?
在此先感谢
HTTPService在发送一个字符串像这样带有一定频率:
行号列#号#行号列#号#行号列#号#....
EDITED code:
<?XML版本=1.0编码=UTF-8&GT?;
< MX:应用creationComplete =onCreationComplete()
的xmlns:MX =http://www.adobe.com/2006/mxml布局=绝对>
< MX:脚本>
<![CDATA [
进口mx.rpc.remoting.RemoteObject;
进口mx.rpc.events.ResultEvent;
进口mx.rpc.events.FaultEvent;
进口mx.rpc.http.mxml.HTTPService;
进口mx.rpc.AsyncRequest;
进口mx.rpc.AsyncResponder;
进口mx.rpc.AsyncToken;
进口mx.collections.ArrayCollection;
进口mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
进口mx.controls.AdvancedDataGrid;
进口mx.controls.Alert;
的mx.rpc.IResponder进口;
[绑定]
公共变种DataList控件:ArrayCollection的; 公共职能getResults(来源:字符串):ArrayCollection的{
VAR AC:ArrayCollection的=新ArrayCollection的();
VAR数据:数组= source.split('#');
对于(VAR我:= 0; I< data.length; I + = 3){
变种dataObj:对象= {行:数据[I],柱:数据第[i + 1],值:数据第[i + 2]};
ac.addItem(dataObj)
} 返回交流;
}
公共职能的结果(事件:的ResultEvent):无效{
DataList控件= getResults(字符串(event.result));
}
公共职能故障(事件:的FaultEvent):无效{
DataList控件= getResults(字符串(event.fault));
}公共职能onCreationComplete():无效
{
VAR服务:的HTTPService =新的HTTPService();
service.url =http://10.15.20.75/server4flex/servlet/Datagen;
service.resultFormat =文本;
VAR令牌:=的AsyncToken service.send(DataList控件);
token.addResponder(新mx.rpc.Responder(结果,故障));
}]]>
< / MX:脚本>
< MX:的AdvancedDataGrid ID =DG
的dataProvider ={}结果
liveScrolling =真
X =10Y =10宽度=621
verticalScrollPolicy =上
>
< MX:列>
< MX:的AdvancedDataGridColumn的dataField =行
HEADERTEXT =里加/>
< MX:的AdvancedDataGridColumn的dataField =栏
HEADERTEXT =科隆纳/>
< MX:的AdvancedDataGridColumn的dataField =值
HEADERTEXT =Valore/>
< / MX:列>
< / MX:&的AdvancedDataGrid GT; < / MX:用途>
我不知道你真正寻找之后,但这里或这里例如,有办法使用的AsyncToken
和 AsyncResponder
编辑:
- 您
的DataList
必须可绑定
- 请不要设置
的DataList
在每次循环迭代 - 您有给你打电话功能
getResults
在某些时候,当你的结果准备就绪 -
事件
在结果
函数是一个事件
,但也有的ResultEvent
那里有一个结果
包含数据字段
这可能看起来这(未经测试):
[绑定]
公共变种DataList控件:ArrayCollection的;公共职能getResults(来源:字符串):ArrayCollection的{
VAR AC:ArrayCollection的=新ArrayCollection的();
VAR数据:数组= source.split('#');
对于(VAR我:= 0; I< data.length; I + = 3){
ac.addItem({行:数据[I],柱:数据第[i + 1],值:数据第[i + 2]});
}
返回交流;
}私有函数的结果(事件:的ResultEvent):无效{
DataList控件= getResults(字符串(event.result));
}
EDIT2
这是用一个简单的PHP文件,以获得本地Web服务器上运行的数据的工作示例。
Flex的一部分
块引用><?XML版本=1.0编码=UTF-8&GT?;
< MX:应用creationComplete =onCreationComplete()
的xmlns:MX =http://www.adobe.com/2006/mxml布局=绝对>
< MX:脚本>
<![CDATA [
进口mx.collections.ArrayCollection;
进口mx.rpc.AsyncToken;
进口mx.rpc.Responder;
进口mx.rpc.events.FaultEvent;
进口mx.rpc.events.ResultEvent;
进口mx.rpc.http.mxml.HTTPService; [绑定]
公共变种DataList控件:ArrayCollection的; 公共职能getResults(来源:字符串):ArrayCollection的{
VAR AC:ArrayCollection的=新ArrayCollection的();
VAR数据:数组= source.split('#');
对于(VAR我:= 0; I< data.length; I + = 3){
变种dataObj:对象= {行:数据[I],柱:数据第[i + 1],值:数据第[i + 2]};
ac.addItem(dataObj)
} 返回交流;
} 公共职能的结果(事件:的ResultEvent):无效{
DataList控件= getResults(字符串(event.result));
} 公共职能故障(事件:的FaultEvent):无效{
//在这里做任何你要管理你收到的错误
} 公共职能onCreationComplete():无效
{
VAR服务:的HTTPService =新的HTTPService();
service.url =http://127.0.0.1/getDatas.php;
service.resultFormat =文本;
VAR令牌:=的AsyncToken service.send();
token.addResponder(新mx.rpc.Responder(结果,故障));
}]]>
< / MX:脚本>
< MX:的AdvancedDataGrid ID =DG
的dataProvider ={} DataList控件
liveScrolling =真
X =10Y =10宽度=621
verticalScrollPolicy =上
>
< MX:列>
< MX:的AdvancedDataGridColumn的dataField =行
HEADERTEXT =里加/>
< MX:的AdvancedDataGridColumn的dataField =栏
HEADERTEXT =科隆纳/>
< MX:的AdvancedDataGridColumn的dataField =值
HEADERTEXT =Valore/>
< / MX:列>
< / MX:&的AdvancedDataGrid GT;< / MX:用途>
PHP的一部分(getDatas.php)
块引用><?PHP打印1#C1#V1#2#C2#V2#,3#C3#V3>
Where can I find an example of Flex application which implements an HTTPService asynchronously called by an AsyncToken and an AsyncResponder? Thanks in advance
the httpservice send a string like this with a certain frequency:
row#column#number#row#column#number#row#column#number#....
EDITED CODE:
<?xml version="1.0" encoding="utf-8"?> <mx:Application creationComplete="onCreationComplete()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.rpc.remoting.RemoteObject; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.rpc.http.mxml.HTTPService; import mx.rpc.AsyncRequest; import mx.rpc.AsyncResponder; import mx.rpc.AsyncToken; import mx.collections.ArrayCollection; import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn; import mx.controls.AdvancedDataGrid; import mx.controls.Alert; import mx.rpc.IResponder; [Bindable] public var dataList:ArrayCollection; public function getResults(source:String) : ArrayCollection { var ac:ArrayCollection = new ArrayCollection(); var data:Array = source.split('#'); for (var i:int = 0; i < data.length; i += 3) { var dataObj:Object = {row: data[i], column: data[i+1], value: data[i+2]}; ac.addItem(dataObj) } return ac; } public function result(event:ResultEvent):void{ dataList = getResults( String(event.result) ); } public function fault(event:FaultEvent) : void { dataList = getResults(String(event.fault)); } public function onCreationComplete():void { var service:HTTPService = new HTTPService(); service.url = "http://10.15.20.75/server4flex/servlet/Datagen"; service.resultFormat = "text"; var token:AsyncToken = service.send(dataList); token.addResponder(new mx.rpc.Responder(result, fault)); } ]]> </mx:Script> <mx:AdvancedDataGrid id="dg" dataProvider="{result}" liveScrolling="true" x="10" y="10" width="621" verticalScrollPolicy="on" > <mx:columns> <mx:AdvancedDataGridColumn dataField="row" headerText="Riga"/> <mx:AdvancedDataGridColumn dataField="column" headerText="Colonna"/> <mx:AdvancedDataGridColumn dataField="value" headerText="Valore"/> </mx:columns> </mx:AdvancedDataGrid> </mx:Application>
解决方案I dont know what you are really looking after but here or here for example, are way to use
AsyncToken
andAsyncResponder
Edit:
- your
dataList
have to beBindable
- Don't set
dataList
on each loop iteration- You have to call you function
getResults
at some point when your results are readyevent
inresult
function is anEvent
but also aResultEvent
where there is aresult
field containing your dataWhich may look as this (untested):
[Bindable] public var dataList:ArrayCollection; public function getResults(source:String) : ArrayCollection { var ac:ArrayCollection = new ArrayCollection(); var data:Array = source.split('#'); for (var i:int = 0; i < data.length; i += 3) { ac.addItem( {row: data[i], column: data[i+1], value: data[i+2]} ); } return ac; } private function result(event:ResultEvent) : void { dataList = getResults( String(event.result) ); }
Edit2:
this is a working example using a simple php file to get the data running on a local web server.
Flex part
<?xml version="1.0" encoding="utf-8"?> <mx:Application creationComplete="onCreationComplete()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.rpc.AsyncToken; import mx.rpc.Responder; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.mxml.HTTPService; [Bindable] public var dataList : ArrayCollection; public function getResults(source : String) : ArrayCollection { var ac : ArrayCollection = new ArrayCollection(); var data : Array = source.split('#'); for (var i : int = 0; i < data.length; i += 3) { var dataObj : Object = {row: data[i], column: data[i + 1], value: data[i + 2]}; ac.addItem(dataObj) } return ac; } public function result(event : ResultEvent) : void { dataList = getResults(String(event.result)); } public function fault(event : FaultEvent) : void { //here do whatever you want to manage the error you received } public function onCreationComplete() : void { var service : HTTPService = new HTTPService(); service.url = "http://127.0.0.1/getDatas.php"; service.resultFormat = "text"; var token : AsyncToken = service.send(); token.addResponder(new mx.rpc.Responder(result, fault)); } ]]> </mx:Script> <mx:AdvancedDataGrid id="dg" dataProvider="{dataList}" liveScrolling="true" x="10" y="10" width="621" verticalScrollPolicy="on" > <mx:columns> <mx:AdvancedDataGridColumn dataField="row" headerText="Riga"/> <mx:AdvancedDataGridColumn dataField="column" headerText="Colonna"/> <mx:AdvancedDataGridColumn dataField="value" headerText="Valore"/> </mx:columns> </mx:AdvancedDataGrid> </mx:Application>
Php part (getDatas.php)
<?php print "1#c1#v1#2#c2#v2#3#c3#v3"?>
这篇关于的HTTPService的AsyncToken和AsyncResponder例子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!