废话就不说了,直接切入正题,我们这就开始。
在开始之前,先简单的介绍一下需要用到的一些资源。
1、 MyEclipse+Flex3插件(官网下载)或者Flex Builder3
2、Visual Studio 2005或者之后的版本(VS2005请确保打上了SP1包)
3、IIS6.0或者更高级的版本,低级一点其实也可以。。
C#+Flex配置:
我们先配置Flex。
1、点文件(File),新建一个Flex项目.图1:
2、填入项目名称,我们这取名叫Test,ApplicationType选择Web Application,Application Server Type选择ASP.NET,如图2:
3、点击下一步,配置ASP.NET Server.基本上不需要做什么配置,直接用默认的就行(直接选择ASP.NET Development Server,每次启动在任务栏都会启动一个开发用的Server,它的端口号是随机的,如果你要用本地的IIS也行,直接填写就OK了,建议就选默认),如图3:
4、点击下一步,这步也不需要做什么,直接点Finish吧。
5、好了,项目建好了,我们在Text.mxml中随便加个Label:
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute”>
<mx:Label x=”426″ y=”180″ text=”Label” id=”helloLabel”/>
</mx:Application>
右击代码区空白处,按Ctrl+F11执行,效果如下图:
至此,Flex端的配置结束了,是不是很简单呢。呵呵。
VS端的配置:
1、首先需要提醒的是VS2005需要打上SP1包。如果确实打过了,我们就点文件,新建一个项目,选择Web下的ASP.NET Web服务应用程序,如果没这个选,说明你没打SP1包,赶紧去打吧。。。有图为证:
2、我们按Ctrl+F5运行这个程序,是不是看到的和我一样?
说一样的人说明你不细心,地址不一样撒。地址是特别要注意的,这时候要把端口号记下来,我的是51270,
点HelloWorld,然后调用下,看看是不是有一个XML文件,然后有HelloWorld出来。如果是的话,就说明正确了。
3、接下来回到Flex端,我们添加一个WebService去取C#端的HelloWorld。
代码如下:
<mx:WebService id=”ws” wsdl=”http://localhost:51270/Service1.asmx?WSDL” >
<mx:operation name=”HelloWorld” resultFormat=”object” result=”ResultHello(event)” >
</mx:operation>
</mx:WebService>
解释一下:id不用说了,必须要有,今后调用就是通过ID来的。wsdl我们详细说一下。这个地址很重要,写错就会报错了。http://localhost不用说,在我们开发期间一般都是这个域名,后面的端口号是你刚刚启动的WebService的端口号,记住,是之前的一个,不是Flex运行的那个。我的是51270.下面的<mx:operation>是配置的VS端对应的方法,这里方法名一定要一致,大小写也要一致。具体到我这个例子是HelloWorld对应VS端Service1.asmx的HelloWorld()方法. resultFormat指的是返回的对象格式,result指的是如果方法调用成功后执行的函数。
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
public function ResultHello(event:ResultEvent):void{
this.helloLabel.text = event.result.toString();
}
]]>
</mx:Script>
在这个Result函数中,我们对HelloLabel进行赋值.
我们什么时候调用这个WebService呢,这里选择在页面载入完成之后,所以我们给Application加上creationComplete事件:
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” creationComplete=”OnComplete(event)”>
再写OnComplete函数:
public function OnComplete(event:Event):void{
ws.HelloWorld();
}
好了,大功告成,这里是全部Flex端的代码:
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” creationComplete=”OnComplete(event)”>
<mx:WebService id=”ws” wsdl=”http://localhost:51270/Service1.asmx?WSDL”>
<mx:operation name=”HelloWorld” resultFormat=”object” result=”ResultHello(event)” >
</mx:operation>
</mx:WebService>
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
public function OnComplete(event:Event):void{
ws.HelloWorld();
}
public function ResultHello(event:ResultEvent):void{
this.helloLabel.text = event.result.toString();
}
]]>
</mx:Script>
<mx:Label x=”347″ y=”183″ id=”helloLabel”/>
</mx:Application>
按Ctrl+F11运行,是不是看到了HelloWorld了呢?
如果没有的话,检查下WebService的地址有没有写对,并且VS端的WebService要处于运行状态,就是右下角那个Server不要关掉。