Flex前台和后台WCF服务之间数据的接收与传输

时间:2021-12-12 12:55:09

1.首先在flex程序中通过添加webservice,方式是主菜单Data->Connect to WebService,然后输入wsdl文档的地址。如果输入地址后始终添加不进了,或者报错,一般是服务在发布时的配置问题。有些服务添加的时间稍长,慢慢等。

2.添加进来后,会自动生成一个包,在Application标签里添加如xmlns:myservice="services.service1.*"  (xmlns:自定义服务名="services.服务名.*")

3.在<fx:Declarations>内添加一个<myservice:Service1 id="ws" showBusyCursor="true"/>。在其后再添加一个<s:CallResponder id="callResponder"/>

关键的是前面三部。

下面上代码:

 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags"
xmlns:myservice="services.service1.*"
creationComplete="initApp()" >
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent; protected function initApp():void
{
callResponder.token=ws.GetData();
callResponder.addEventListener(ResultEvent.RESULT,result);
callResponder.addEventListener(FaultEvent.FAULT,fault); }
private function result(event:ResultEvent):void
{
Alert.show("ok");
}
private function fault(event:FaultEvent):void
{
Alert.show(event.fault.toString());
}
]]>
</fx:Script>
<fx:Declarations>
<myservice:Service1 id="ws" showBusyCursor="true"/>
<s:CallResponder id="callResponder"/>
</fx:Declarations>
</s:Application>

其中调用服务中的接口就是这句:ws.GetData()

callResponder.addEventListener(ResultEvent.RESULT,result);这句是监听结果的,从服务返回的结果在result这个函数中可以获取。