本文介绍了的HTTPService的AsyncToken和AsyncResponder例子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在哪里可以找到它实现由标记的AsyncToken和AsyncResponder异步调用中的HTTPService Flex应用程序的例子吗?
在此先感谢

HTTPService在发送一个字符串像这样带有一定频率:

行号列#号#行号列#号#行号列#号#....

EDITED code:

 <?XML版本=1.0编码=UTF-8&GT?;
< MX:应用creationComplete =onCreationComplete()
的xmlns:MX =htt​​p://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 =htt​​p://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 G​​T; < / MX:用途>


解决方案

我不知道你真正寻找之后,但或例如,有办法使用的AsyncToken AsyncResponder

编辑:


  1. 的DataList 必须可绑定

  2. 请不要设置的DataList 在每次循环迭代

  3. 您有给你打电话功能 getResults 在某些时候,当你的结果准备就绪

  4. 事件结果函数是一个事件,但也有的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服务器上运行的数据的工作示例。

<?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 print "1#c1#v1#2#c2#v2#3#c3#v3"?>

这篇关于的HTTPService的AsyncToken和AsyncResponder例子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-26 06:34