flash+asp.net webServices入门教程(四)

在Flash中调用WS时的身份验证_4:数组 

数组可能是各种语言中最常见的一种数据类型了。下面我们来看一看在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;
}

转载于:https://www.cnblogs.com/cheatlove/articles/360456.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值