http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3083|回复: 0

[IO] Flash/Flex与.NET互操作:基于WebService的数据访问

[复制链接]
发表于 2012-10-16 09:37:05 | 显示全部楼层 |阅读模式
  本文以.NET平台下C#语言开发的WebService作为远程Webservice,详细介绍Flex与.NET的WebService的数据通信知识点;包括连接WebService,远程调用WebService方法,给WebService方法传递参数等相关知识点。三个标签的使用方法基本上是一样,这里就以<mx:WebService>标签为例进行介绍。
  首先看看如下代码块:
[C#] 纯文本查看 复制代码
 <mx:WebServiceid="dataService"
    wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"
    useProxy="false">
    <mx:operationname="HelloWorld"result="onSuccess(event)"fault="onFault(event)"/>
    <mx:operationname="GetBook"fault="onFault(event)"result="onObjectSuccess(event)"/>
  </mx:WebService>
wsdl属性指定到要访问的WebService的wsdl地址既可,其中定义了两个操作标签(<mx:operation>),分别对应于WebService中定义的WebMethod方法。result属性标记访问WebService方法成功后的处理函数;fault则相反,指定于访问失败的处理函数。以上两个<mx:operation>对应于WebService的WebMethod方法如下:
[C#] 纯文本查看 复制代码
///<summary>
  ///返回字符串
  ///</summary>
  ///<returns></returns>
  [WebMethod]
  publicstringHelloWorld()
  {
    return"HelloWorld";
  }

  ///<summary>
  ///返回一个简单对象
  ///</summary>
  ///<returns></returns>
  [WebMethod]
  publicBookGetBook()
  {
    returnnewBook
    {
      Id=1,
      Name="三国演义",
      Author="罗贯中",
      Price=100
    };
  }
  如上便是WebService方法定义和在Flex的客户端(mxml)通过<mx:WebService>标签来访问WebService的完整流程,下面我们来看看在Flex的客户端怎么去调用WebService所定义的方法:
双击代码全选

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

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

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

1
2
3
4
5
6
7
8
9
10

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

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

1
2
3
4
5
6
7
8
9
10

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

1  internalfunctiononObject():void
2  {
3    dataService.GetBook();
4  }
5  
6  internalfunctiononObjectSuccess(evt:ResultEvent):void
7  {
8    //直接通过事件的result属性得到返回值,然后直接访问属性便OK
9    Alert.show(evt.result.Name);
10  }
11  
12  /**
13   *请求失败的处理函数
14   **/
15  internalfunctiononFault(evt:FaultEvent):void
16  {
17    Alert.show("访问WebService失败!");
18  }

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


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-6 05:42

© 2014-2021

快速回复 返回顶部 返回列表