在Flash中調用WS時的身分識別驗證_4:數組

來源:互聯網
上載者:User
    數組可能是各種語言中最常見的一種資料類型了。下面我們來看一看在Flash與ws互動時如何處理數組(或者“近似”數組的資料類型)。
    還是讓我們藉著對sample2.asmx.cs修修補補吧:在sample2.asmx.cs中增加一個web方法:
         [WebMethod]
        public string[] GetArray_1(){
            string[] strArr={"喬狗","劉鵬","陳波","張成平","費明","陳剛"};
            return strArr;            
            }
     該方法返回一個字串數組,編譯之,在flash的web服務視窗中可以看到此圖片僅顯示局部,請點擊查看完整圖片


該方法返回的資料類型。
    下面讓我們在AS指令碼中處理接受過來的資料:
function GetArray_1(result){
    trace("ws方法GetArray_1返回的值為:");
    trace("/////////////////////////");
    for (var i=0;i<result.length;i++){
        trace(i+":"+result[  i  ]);
        }
    }
    咳!和本地處理數組一點區別都沒有。
    
    實際上,在.net中我們對原始Array資料型用的不多。更多的是使用System.Collections命名空間中的一些較“進階”的資料類型:ArrayList、Hashtable、HybridDictionary等等。在ws+flash互動中,他們的處理和數組類似,不過,在flash也提供了一些複雜的類、API讓我們更簡單方便的處理這些較複雜的資料類型。
    先看一看ArrayList的一個最簡單的應用,在sample2.asmx.cs中增加web方法GetArray_2:
        [WebMethod(Description="數組的調用:ArrayList")]
        public ArrayList GetArray_2(){
            ArrayList strArr=new ArrayList();
            int i=0;
            for (i=0;i<100;i++){
                strArr.Add("strArr["+i+"]");                
                }
            return strArr;
            }
    Flash用戶端的處理與處理普通數組無異,就不列出代碼了。此圖片僅顯示局部,請點擊查看完整圖片


上面是一個複雜資料的處理執行個體,如所示。
首先來看一看伺服器端的實現:首先在sample2.asmx.cs中增加web方法GetArray_3:
[WebMethod(Description="數組的調用,包含對象")]
        public Car[] GetArray_3(){
            Car HG=new Car("皇冠",2004);
            Car JM=new Car("佳美",2003);
            Car YK=new Car("雅閣",2004);
            Car BJS=new Car("畢加索",2002);
            Car[] carArr={HG,JM,YK,BJS};
            return carArr;
            }
    需要注意這裡的Car類來自哪裡呢?下面是Car類的實現:
[Serializable]
    public class Car{
        //聲明欄位model、yearBuilt;
        public string model;
        public int yearBuilt;
        
        //定義構造器
        public Car(string model,int yearBuilt){
            this.model=model;
            this.yearBuilt=yearBuilt;
            }
            
        public Car(){
            
            }
        }
    千萬注意:Car類一定要序列化!!
    在瀏覽器中測試該方法,可以返回下列XML檔案
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfCar xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://www.dxlschool.com/ws/">
  <Car>
    <model>皇冠</model>
    <yearBuilt>2004</yearBuilt>
  </Car>
  <Car>
    <model>佳美</model>
    <yearBuilt>2003</yearBuilt>
  </Car>
  <Car>
    <model>雅閣</model>
    <yearBuilt>2004</yearBuilt>
  </Car>
  <Car>
    <model>畢加索</model>
    <yearBuilt>2002</yearBuilt>
  </Car>
</ArrayOfCar>
再讓我們回到Flash2004,看一看用戶端的處理,非常的簡單:
function GetArray_3(result){
    //定義一個數組接受ws傳值
    var myDB:Array=result;
    //將數組myDB與DataGrid組件gb_main綁定
    gb_main.dataProvider=myDB;
    }

    ……

this.dbBind2_bt.onPress=function(){
    var op_7:PendingCall=myws.GetArray_3();
    op_7.onResult=GetArray_3;
    }

大功告成,赫赫,雙兒了??!!!赫赫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.