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

简介:
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       public   string  HelloWorld()
 7      {
 8           return   " Hello World " ;
 9      }
10 
11       ///   <summary>
12       ///  返回一个简单对象
13       ///   </summary>
14       ///   <returns></returns>
15      [WebMethod]
16       public  Book GetBook()
17      {
18           return   new  Book
19          {
20              Id  =   1 ,
21              Name  =   " 三国演义 " ,
22              Author  =   " 罗贯中 " ,
23              Price  =   100
24          };
25      }
 
     如上便是WebService方法定义和在Flex的客户端(mxml)通过<mx:WebService>标签来访问WebService的完整流程,下面我们来看看在Flex的客户端怎么去调用WebService所定义的方法:
 1  < mx:. >
 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>的id
 9           *  */
10           internal  function onRequest(): void
11          {
12              dataService.HelloWorld();
13          }
14          
15           /* *
16           * 请求成功处理返回结果
17           *  */
18           internal  function onSuccess(evt:ResultEvent): void
19          {
20              Alert.show(evt.result.toString());
21          }
22          
23          
24           /* *
25           * 请求失败的处理函数
26           *  */
27           internal  function onFault(evt:FaultEvent): void
28          {
29              Alert.show( " 访问WebService失败! " );
30          }
31      ]] >
32  </ mx:. >
 
      通过上面的调用,就可以完成一个Flex和.NET WebService的交互。当然我们在Flash/Flex的客户端调用WebService也是可以传递参数的,如下WebService的WebMethod定义:
 1       ///   <summary>
 2       ///  将传递进来的参数转化为大写字符返回
 3       ///   </summary>
 4       ///   <param name="value"></param>
 5       ///   <returns></returns>
 6      [WebMethod]
 7       public   string  ConvertToUpper( string  value)
 8      {
 9           return  value.ToUpper();
10      }
 
     通过在<mx:WebService>标签下配置<mx:operation>执行该方法就可以访问了,如下:
1  < mx:operation name = " ConvertToUpper "   result = " onSuccess(event) "  fault = " onFault(event) " />
 
1      /* *
2       * 向WebService发起请求
3       *  */
4       internal  function onRequest(): void
5      {
6           // dataService.HelloWorld();
7          dataService.ConvertToUpper( " abcdefg " );
8      }

     另外,我们还可以通过<mx:request>来传递参数,这里只需要知道<mx:request></mx:request>里的参数配置与WebService提供的WebMethod方法参数同名就OK。
     回到前面看看WebService的方法定义,其中一个方法GetBook是返回的一个Book对象,如果是返回的对象我们在Flex的客户端怎么来获取这个对象的值呢?详细见如下代码示例:
 1       internal  function onObject(): void
 2      {
 3          dataService.GetBook();
 4      }
 5      
 6       internal  function onObjectSuccess(evt:ResultEvent): void
 7      {
 8           // 直接通过事件的result属性得到返回值,然后直接访问属性便OK
 9          Alert.show(evt.result.Name);
10      }
11      
12       /* *
13       * 请求失败的处理函数
14       *  */
15       internal  function onFault(evt:FaultEvent): void
16      {
17          Alert.show( " 访问WebService失败! " );
18      }
 
     如上便完成了服务端的WebService返回对象到客户端的调用。




本文转自 beniao 51CTO博客,原文链接:http://blog.51cto.com/beniao/126539,如需转载请自行联系原作者

目录
相关文章
|
29天前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
8 0
|
28天前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
1月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
174 2
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
Oracle 关系型数据库 数据管理
.NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。
|
6月前
|
前端开发 JavaScript
.net core 前端传递参数有值 后端接收到的数据却是null
1、问题分析 在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况 2、解决办法 前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比对 小技巧: ① 直接打印调用接口的传参值的数据类型,例如 console.log(type of this.form.name) --string console.log(type of this.form.age) --number 打印的数据类型与后端接口的参数类比对,查出不对应的类型 ② 关于非必填的值,默认传值可能出现空字符串(' ')、NaN值(Not a Number
97 0
|
7月前
|
JSON 数据格式
.NET Core - 配置绑定:使用强类型对象承载配置数据
.NET Core - 配置绑定:使用强类型对象承载配置数据
|
9月前
|
数据库 C#
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
208 0
|
12月前
|
Web App开发
.Net Core下使用HtmlAgilityPack解析采集互联网数据
.Net Core下使用HtmlAgilityPack解析采集互联网数据
90 0
|
XML API 数据格式
十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口
使用SoapCore实现在.net core平台下开发webservice;以及使用HttpClientFactory动态访问webservice。首先,需要在包项目下面引用SoapCore:
815 0
十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口