Flex提供了<mx:WebService>、<mx:HTTPService>和<mx:RemoteObject>标签来直接访问远程数据,这用于与各种不同语言环境开发提供的远程服务端数据源(如WebService)进行数据交互通信显得更加容易.

本文以.NET平台下C#语言开发的WebService作为远程数据源,详细介绍Flex与.NET的WebService的数据通信知识点;包括连接WebService,远程调用WebService方法,给WebService方法传递参数等相关知识点。三个标签的使用方法基本上是一样,这里就以<mx:WebService>标签为例进行介绍。

首先看看如下代码块:

1 <mx:WebService id="dataService"2 wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"3 useProxy="false">4 <mx:operation name="HelloWorld"result="onSuccess(event)"fault="onFault(event)"/>5 <mx:operation name="GetBook"fault="onFault(event)"result="onObjectSuccess(event)"/>6 </mx:WebService>

wsdl属性指定到要访问的WebService的wsdl地址既可,其中定义了两个操作标签(<mx:operation>),分别对应于WebService中定义的WebMethod方法。result属性标记访问WebService方法成功后的处理函数;fault则相反,指定于访问失败的处理函数。以上两个<mx:operation>对应于WebService的WebMethod方法如下:

1 ///<summary>2 ///返回字符串3 ///</summary>4 ///<returns></returns>5 [WebMethod]6 publicstringHelloWorld()7 {8 return"Hello World";9 }10 11 ///<summary>12 ///返回一个简单对象13 ///</summary>14 ///<returns></returns>15 [WebMethod]16 publicBook GetBook()17 {18 returnnewBook19 {20 Id =1,21 Name ="三国演义",22 Author ="罗贯中",23 Price =10024 };25 }

如上便是WebService方法定义和在Flex的客户端(mxml)通过<mx:WebService>标签来访问WebService的完整流程,下面我们来看看在Flex的客户端怎么去调用WebService所定义的方法:

1 <mx:Script>2 <![CDATA[3 import mx.controls.Alert;4 import mx.rpc.events.FaultEvent;5 import mx.rpc.events.ResultEvent;6 7 /**8 * 向WebService发起请求--调用HelloWorld方法,dataService为<mx:WebService>的id9 * */10 internalfunction onRequest():void11 {12 dataService.HelloWorld();13 }14 15 /**16 * 请求成功处理返回结果17 * */18 internalfunction onSuccess(evt:ResultEvent):void19 {20 Alert.show(evt.result.toString());21 }22 23 24 /**25 * 请求失败的处理函数26 * */27 internalfunction onFault(evt:FaultEvent):void28 {29 Alert.show("访问WebService失败!");30 }31 ]]>32 </mx:Script>

通过上面的调用,就可以完成一个Flex和.NET WebService的交互。当然我们在Flash/Flex的客户端调用WebService也是可以传递参数的,如下WebService的WebMethod定义:

1 ///<summary>2 ///将传递进来的参数转化为大写字符返回3 ///</summary>4 ///<param name="value"></param>5 ///<returns></returns>6 [WebMethod]7 publicstringConvertToUpper(stringvalue)8 {9 returnvalue.ToUpper();10 }

通过在<mx:WebService>标签下配置<mx:operation>执行该方法就可以访问了,如下:

1 <mx:operation name="ConvertToUpper"result="onSuccess(event)"fault="onFault(event)"/>

1     /**2 * 向WebService发起请求3 * */4 internalfunction onRequest():void5 {6 //dataService.HelloWorld();7 dataService.ConvertToUpper("abcdefg");8 }

另外,我们还可以通过<mx:request>来传递参数,这里只需要知道<mx:request></mx:request>里的参数配置与WebService提供的WebMethod方法参数同名就OK。

回到前面看看WebService的方法定义,其中一个方法GetBook是返回的一个Book对象,如果是返回的对象我们在Flex的客户端怎么来获取这个对象的值呢?详细见如下代码示例:

1 internalfunction onObject():void2 {3 dataService.GetBook();4 }5 6 internalfunction onObjectSuccess(evt:ResultEvent):void7 {8 //直接通过事件的result属性得到返回值,然后直接访问属性便OK9 Alert.show(evt.result.Name);10 }11 12 /**13 * 请求失败的处理函数14 * */15 internalfunction onFault(evt:FaultEvent):void16 {17 Alert.show("访问WebService失败!");18 }

如上便完成了服务端的WebService返回对象到客户端的调用。

版权说明

本文属原创文章,欢迎转载,其版权归作者和博客园共有。

作      者:Beniao

文章出处: http://www.cnblogs.com/

=====================================================================================

以下是demo.mxml代码:<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"><mx:WebService id="dataService" wsdl="http://localhost:3035/WebService1.asmx?wsdl"useProxy="false"><mx:operation name="HelloWorld" result="onSuccess(event)"fault="onFault(event)"></mx:operation><mx:operation name="GetBook" fault="onFault(event)" result="onObjectSuccess(event)"/></mx:WebService><mx:Script><![CDATA[import mx.rpc.Fault;import mx.controls.Alert;import mx.rpc.events.FaultEvent;import mx.rpc.events.ResultEvent;internal function onRequest():void{dataService.HelloWorld(); }internal function onSuccess(evt:ResultEvent):void{Alert.show(evt.result.toString());}internal function onFault(evt:FaultEvent):void{Alert.show("访问WebService失败!");}internal function onObject():void{dataService.GetBook(); }internal function onObjectSuccess(evt:ResultEvent):void{Alert.show(evt.result.Name);}]]></mx:Script><mx:Button id="btnHello" label="CALLHELLO" click="onRequest()" x="142" y="137"></mx:Button><mx:Button x="289" y="135" label="GETBOOK" fontSize="12" click="onObject()"/></mx:Application>注:前台中webService的地址与端口要根据vs2008运行时的那个地址定,并且在运行fb3中的mxml时,vs2008的这个网站要处于运行状态,webService才可以用

Flex与.NET互操作(二):基于WebService的数据访问(上)相关推荐

  1. Flex与.NET互操作(三):基于WebService的数据访问(下)

    在上一篇文章<Flex与.NET互操作(二):基于WebService的数据访问(上) >中介绍了通过<mx:WebService>标签来访问Webservice.实际上我们也 ...

  2. [转]Flex与.NET互操作(三):基于WebService的数据访问(下)

    转自:http://blog.csdn.net/beniao277/archive/2009/01/19/3837605.aspx 在上一篇文章<Flex与.NET互操作(二):基于WebSer ...

  3. html webservice数据交互_一种基于WebService的数据交换方法

    一种基于WebService的数据交换方法 [专利摘要]本发明涉及数据交换[技术领域],特别涉及一种基于WebService的数据交换方法.本发明是以Web服务为依托,通过定义参数的方式进行传入内容和 ...

  4. 企业级应用架构(二)三层架构之数据访问层的封装与抽象

    在上一篇我们知道,要解除BLL对DAL的依赖,我们就必须抽象出DAL层的接口,同时基于DAL的数据访问技术很多,如EF,ADO.NET,LINQ TO SQL,因此,我们的数据访问层必须对这些技术提供 ...

  5. mysql ormlite_GitHub - loogn/Loogn.OrmLite: Loogn.OrmLite是一个简单、高效的基于.NET的数据访问组件!...

    简要 Loogn.OrmLite是一个超简单.超高效.超灵活的基于.net standard 2.0的数据访问组件! 特点 支持sqlserver.mysql.sqlite3数据库: 通过扩展方法扩展 ...

  6. 第六章节 三层架构(二. 模型层与数据访问层)

    一.模型层 1.由于三层之间存在数据交互,所以需要中间介质那就是"模型层",模型层包括与数据库表相对应的实体类,"实体类就相当于数据库中的数据表,实体类里的属性就相当于数 ...

  7. 中控考勤机的二次开发之数据秒上传至服务器功能

    1.客户选择了中控考勤机:IFACE系列 2.客户需要在WEB端实时看到员工的考勤情况 3.需要做到客户员工数据及时传递到服务器 实现方法如下: 1.安装中控DLL(一定要注意操作系统是32位还是64 ...

  8. Flex与.NET互操作系列文章

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

  9. Flex与.NET互操作系列文章索引

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

最新文章

  1. 3线程同步:条件变量
  2. C++ dlopen mini HOWTO 一篇非常好的介绍C++ dlopen linux/mac os x 编程的资料
  3. 【Hadoop系列】HDFS
  4. POJ-1236 Network of Schools 缩点
  5. mysql调优_MYSQL企业常用架构与调优经验分享
  6. python 进阶知识点_高效率 Python 进阶:10 个关键知识点与特性
  7. 机器学习和AI的Python基础
  8. android中设置控件的搞,Android中如何自定义控件
  9. 开源激荡 30 年:从免费社区到价值数十亿美元公司
  10. 苹果python环境依赖库,【强迫症系列】【mac】更改 Python 的 pip install 默认安装依赖路径...
  11. 谈谈以前那位研发总监错在哪里
  12. 【干货分享】电信云/边缘云虚拟层软件StarlingX介绍
  13. 阿尔卑斯山时间规划法精髓(提高工作效率)
  14. 超详细的抖音养号上热门技巧,看完这一篇就够了
  15. 2021年中国银行卡发行数量及交易规模分析:交易金额达1002.1亿元,同比增长12.85%[图]
  16. 世界最大射电望远镜(Arecibo)用于探测地外文明
  17. 谷歌新系统 fuchsia
  18. python、idel、pycharm的安装使用
  19. UVA 11549 calcular conundrum 计算机老谜题
  20. EDA(Quartus II)——乐曲硬件演奏电路设计

热门文章

  1. OpenGL使用深度剥离命令获得独立的透明度
  2. C++求一个整数的各位数字总和(附完整源码)
  3. C++modular exponentiation模幂运算的实现算法(附完整源码)
  4. QT的QByteArray 类的使用
  5. springboot整合mysql5.7_每天五分钟写K8(四):SpringBoot与mysql整合
  6. 先天性脑部发育异常_宝宝出现发育迟缓,会有哪些症状?修正育儿知识分享!...
  7. 9.LDA(线性判别分析)
  8. B01_NumPy Ndarray对象(ndarray内容结构,参数,多维,最小维度,dtype参数)
  9. spark的源码编译
  10. SQLite 数据类型(http://www.w3cschool.cc/sqlite/sqlite-data-types.html)