代码之家  ›  专栏  ›  技术社区  ›  Fseee

httpService AsyncToken和AsyncResponder示例

  •  1
  • Fseee  · 技术社区  · 15 年前

    我在哪里可以找到一个实现异步令牌和异步响应器异步调用的httpService的flex应用程序示例? 提前谢谢

    httpService以特定的频率发送这样的字符串:

    行列编号行列编号行列编号…..

    编辑代码:

    <?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>
    
    2 回复  |  直到 15 年前
        1
  •  6
  •   Patrick    15 年前

    我不知道你到底在照顾什么,但是 here here 例如,是使用 AsyncToken AsyncResponder

    编辑:

    1. 你的 dataList 必须是 Bindable
    2. 不要设置 数据学家 在每个循环迭代中
    3. 你必须调用你的函数 getResults 当你的结果准备好的时候
    4. event 在里面 result 函数是一个 Event 而且也是 ResultEvent 哪里有 结果 包含数据的字段

    可能看起来像这样(未测试):

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

    编辑2 :

    这是一个使用简单的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部分(getdatas.php)

    <?php print "1#c1#v1#2#c2#v2#3#c3#v3"?>
    
        2
  •  4
  •   James Ward    15 年前
    private function onCreationComplete():void
    {
        var service:HTTPService = new HTTPService();
        service.url = "http://www.google.com";
        service.resultFormat = "text";
        var token:AsyncToken = service.send();
        token.addResponder(new mx.rpc.Responder(result, fault));
    }
    
    private function result(event:Event):void
    {
        trace(1, event);
    }
    
    private function fault(event:Event):void
    {
        trace(2, event);
    }
    

    发现 here .

    推荐文章