AS与C#交互

      AS就跟JS差不多,也是Web开放的一种规范吧,相信大家都知道JS与C#交互。这两天项目做集成开放,都是都flex builder4做的flash,然后把数据传出来,保存在数据库中,这过程中需要与C#交互。在此在网上进一步查找了些资料,手头项目完成了,我也把这个实现整理整理。

      其实AS与C#交换我个人理解有两种方式,一种是直接调用基于C#语言实现的web service,另一种就是与JS交互,然后再让JS与C#交换,其实我这次用到的是第二种。下面分享中AS调用web service,直接描述在flex builder中新建项目了,高手的忽略。

第一步、构建界面。用于接受用户输入及结果输出。包括:1个Text输入组件,1个按钮组件,10个标签组件

第二步、添加Webservice组件。根据Web服务提供者的说明,构建Webservice组件。代码如下:

 1 <mx:WebService id="ws" wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"
 2          useProxy="false" showBusyCursor="true">
 3         <mx:operation name="getWeatherbyCityName" result="resultOK()">
 4             <mx:request>
 5                 <theCityName>
 6                     {city.text.toString()}
 7                 </theCityName>
 8             </mx:request>
 9         </mx:operation>
10 </mx:WebService>

注意:operation组件中的name属性需要和待使用的方法的名字相同。result的属性是在调用方法成功后执行的Action Script 方法。operation还有其他属性,鉴于例子很简单,就不一一使用了。

第三步、编写Action Script方法。本例中使用了三个方法: resultOK()用于显示结果的,showMessage()用于显示说明,getfocus()用于当输入栏得到焦点时清空输入栏内容的。下面是resultOK()的分析:

 1 public function resultOK():void{        //显示接受的结果
 2             arrayResult=new ArrayCollection();
 3             arrayResult=ws.getWeatherbyCityName.lastResult;
 4             
 5             //显示今天的情况
 6             jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(" "));
 7             jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(" "))+1);
 8             jin3.text=arrayResult[5];
 9             jin4.text=arrayResult[7];
10             
11             //显示明天的情况
12             ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(" "));
13             ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(" "))+1);
14             ming3.text=arrayResult[12];
15             ming4.text=arrayResult[14];
16             
17             //显示后天的情况
18             hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(" "));
19             hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(" "))+1);
20             hou3.text=arrayResult[17];
21             hou4.text=arrayResult[19];
22         }

在使用Web服务返回的结果时,发现其结果保存在字符数组中的,在WSDL中是ArrayOfString,而Flex没有这种格式,在试过String,Array类型后,发现ArrayCollection类可以使用。然后就是显示结果,可根据WSDL说明来挑选信息。

第四步、使用按钮调用Webservice组件,发送Web服务信息。即调用ws.getWeatherbyCityName.send()方法。编译发布swf文件。

好了,代码都贴出来,直接复制下,就可以直接使用了。如果错误之处还请见笑哈。

 

 

 

 

posted @ 2013-03-23 21:42  leyoutt  阅读(199)  评论(0编辑  收藏  举报