大家在实际开发过程中,经常会需要C#与Flex协同合作,尤其对数据库的访问处理时,经常会通过C#写好访问数据库的WebService,然后Flex调用WebService。
下面是一个简单的Flex调用WebService的示例。
C#如何编写WebService请看:。
上述WebService示例中没有对所写的WebService进行发布,如果想用Flex访问的话,需要先将所写的WebService发布。具体发布方法如下:
发布前首先确保在网站项目里写的asmx方法调试通过没有问题并都在方法前加了[WebMethod],确定后就可以发布了,发布方式跟发布一个普通网站一样。
1、解决方案管理器里右键点击项目名>>>>>发布,具体操作如下图;
在弹出的窗体中,设置发布方法为:文件系统。然后设置目标位置,点击:发布即可。
2、然后打开将结果部署到IIS中,如下图:
任意定义一个网站名称,物理路径就选择刚才发布时选择的路径,然后记得改一下端口号,最好是介于1025----65535之间,然后点击确定就可以了。
部署完成之后在内容视图找到asmx文件右键 浏览,如下图所示。浏览器中的地址就是此服务的访问地址。
到现在为止,服务就定义并发布完成了。下面就是要用Flex调用WebService。
Flex提供了<mx:WebService>、<mx:HTTPService>和<mx:RemoteObject>标签来直接访问远程数据,这用于与各种不同语言环境开发提供的远程服务端数据源(如WebService)进行数据交互通信显得更加容易(此段话源于网络)。这里就以<mx:WebService>标签为例进行介绍
<mx:WebService id="MyService"
wsdl=http://localhost:1999/Service1.asmxuseProxy="false">
<mx:operation name="HelloWorld"result="onSuccess(event)"fault="onFault(event)"/>
</mx:WebService>
wsdl属性是指定到要访问的WebService的wsdl地址,操作标签(<mx:operation>),对应于WebService中定义的WebMethod方法。result属性标记访问WebService方法成功后的处理函数;fault则相反,指定于访问失败的处理函数。
以上就是通过<mx:WebService>标签来访问WebService的基本流程,下面是怎么在Flex的客户端调用WebService所定义的方法:
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
internal function onRequest():void
{
MyService.HelloWorld();
}
internal function onSuccess(evt:ResultEvent):void
{
Alert.show(evt.result.toString());
}
internal function onFault(evt:FaultEvent):void
{
Alert.show("访问WebService失败!");
}
]]>
</mx:Script>
通过上面的调用,就完成了一个简单的Flex和.NET WebService的交互。