Flex與.NET互操作(二):基於WebService的資料訪問(上)

來源:互聯網
上載者:User
Flex提供了<mx:WebService>、<mx:HTTPService>和<mx:RemoteObject>標籤來直接存取遠端資料,這用於與各種不同語言環境開發提供的遠程服務端資料來源(如WebService)進行資料互動通訊顯得更加容易.

本文以.NET平台下C#語言開發的WebService作為遠端資料源,詳細介紹Flex與.NET的WebService的資料通訊知識點;包括串連WebService,遠程調用WebService方法,給WebService方法傳遞參數等相關知識點。三個標籤的使用方法基本上是一樣,這裡就以<mx:WebService>標籤為例進行介紹。

首先看看如下代碼塊:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<mx:WebServiceid="dataService"
2wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"
3useProxy="false">
4<mx:operationname="HelloWorld"result="onSuccess(event)"fault="onFault(event)"/>
5<mx:operationname="GetBook"fault="onFault(event)"result="onObjectSuccess(event)"/>
6</mx:WebService>

wsdl屬性指定到要訪問的WebService的wsdl地址既可,其中定義了兩個操作標籤(<mx:operation>),分別對應於WebService中定義的WebMethod方法。result屬性標記訪問WebService方法成功後的處理函數;fault則相反,指定於訪問失敗的處理函數。以上兩個<mx:operation>對應於WebService的WebMethod方法如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1///<summary>
2///返回字串
3///</summary>
4///<returns></returns>
5[WebMethod]
6publicstringHelloWorld()
7{
8return"HelloWorld";
9}
10
11///<summary>
12///返回一個簡單對象
13///</summary>
14///<returns></returns>
15[WebMethod]
16publicBookGetBook()
17{
18returnnewBook
19{
20Id=1,
21Name="三國演義",
22Author="羅貫中",
23Price=100
24};
25}

如上便是WebService方法定義和在Flex的用戶端(mxml)通過<mx:WebService>標籤來訪問WebService的完整流程,下面我們來看看在Flex的用戶端怎麼去調用WebService所定義的方法:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<mx:Script>
2<![CDATA[
3importmx.controls.Alert;
4importmx.rpc.events.FaultEvent;
5importmx.rpc.events.ResultEvent;
6
7/**
8*向WebService發起請求--調用HelloWorld方法,dataService為<mx:WebService>的id
9**/
10internalfunctiononRequest():void
11{
12dataService.HelloWorld();
13}
14
15/**
16*請求成功處理返回結果
17**/
18internalfunctiononSuccess(evt:ResultEvent):void
19{
20Alert.show(evt.result.toString());
21}
22
23
24/**
25*請求失敗的處理函數
26**/
27internalfunctiononFault(evt:FaultEvent):void
28{
29Alert.show("訪問WebService失敗!");
30}
31]]>
32</mx:Script>

通過上面的調用,就可以完成一個Flex和.NET WebService的互動。當然我們在Flash/Flex的用戶端調用WebService也是可以傳遞參數的,如下WebService的WebMethod定義:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1///<summary>
2///將傳遞進來的參數轉化為大寫字元返回
3///</summary>
4///<paramname="value"></param>
5///<returns></returns>
6[WebMethod]
7publicstringConvertToUpper(stringvalue)
8{
9returnvalue.ToUpper();
10}

通過在<mx:WebService>標籤下配置<mx:operation>執行該方法就可以訪問了,如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1<mx:operationname="ConvertToUpper"result="onSuccess(event)"fault="onFault(event)"/>

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1 /**
2*向WebService發起請求
3**/
4internalfunctiononRequest():void
5{
6//dataService.HelloWorld();
7dataService.ConvertToUpper("abcdefg");
8}


另外,我們還可以通過<mx:request>來傳遞參數,這裡只需要知道<mx:request></mx:request>裡的參數配置與WebService提供的WebMethod方法參數同名就OK。

回到前面看看WebService的方法定義,其中一個方法GetBook是返回的一個Book對象,如果是返回的對象我們在Flex的用戶端怎麼來擷取這個對象的值呢?詳細見如下程式碼範例:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1internalfunctiononObject():void
2{
3dataService.GetBook();
4}
5
6internalfunctiononObjectSuccess(evt:ResultEvent):void
7{
8//直接通過事件的result屬性得到傳回值,然後直接存取屬性便OK
9Alert.show(evt.result.Name);
10}
11
12/**
13*請求失敗的處理函數
14**/
15internalfunctiononFault(evt:FaultEvent):void
16{
17Alert.show("訪問WebService失敗!");
18}

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.