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}
如上便完成了服务端的WebService返回对象到客户端的调用。
版权说明
本文属原创文章,欢迎转载,其版权归作者、博客园、CSDN共有。
作 者:beniao
文章出处: http://blog.csdn.net/beniao277 或 http://www.csdn.net
分享到:
相关推荐
Flex与[1].NET互操作:基于WebService的数据访问
Flex与.Net的互操作技术,包括socket,webservice等
在上一篇文章《Flex与.NET互操作(二):基于WebService的数据访问(上) 》中介绍了通过标签来访问Webservice。实际上我们也可以通过编程的方式动态的访问WebService,Flex SDK为我们提供了WebService类。
VB.NET(2010)/JAVA 采用SOAP 与Webservice发送/接收数据
.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子
java访问.net webservice 可获取与设置cookie
Flex提供了、和标签来直接访问远程数据,这用于与各种不同语言环境开发提供的远程服务端数据源(如WebService)进行数据交互通信显得更加容易.
Flex与asp.net的WebService通讯Flex与asp.net的WebService通讯
webservice .net 测试 .NET WebService Studio Introduction: .NET Webservice Studio is a tool to invoke webmethods interactively. The user can provide a WSDL endpoint. On clicking button Get the tool ...
jquery调用基于.NET Framework 3.5的WebService返回JSON数据 jquery调用基于.NET Framework 3.5的WebService返回JSON数据
刘冬编写的Spring.NET学习笔记21——整合WebService的例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/19/SpringNet_WebService.html
.net调用java xfire发布的webservice封装soapheader头信息
Flex基于WebService的数据访问 我以前看过的保存的网页 就1分下完别说我骗你~
【ASP.NET编程知识】ASP.NET中基于soaphead的webservice安全机制.docx
.Net动态调用WebService .Net动态调用WebService .Net动态调用WebService
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设...C++课设:基于QT+webservice的天气查询系统.
在本系列前面几篇文章中分别介绍了通过WebService、HTTPService、URLLoader以及FielReference等组件或类来完成Flex与.NET服务端的通信的相关知识点。
C#_.NET_动态调用webservice的三种方式
可以实现FLEX和.NET的通信,是通过.NET的WEBSERVICE来通信的.本例子只提供学习