登录  /  注册

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

巴扎黑
发布: 2016-12-20 15:17:13
原创
989人浏览过

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

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

首先看看如下代码块:

12wsdl="http://localhost/FlashFlex/DataWebService.asmx?wsdl"
3useProxy="false">
4
5
6

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

1///


2///返回字符串
3///

4///
5[WebMethod]
6publicstringHelloWorld()
7{
8return"HelloWorld";
9}
10
11///
12///返回一个简单对象
13///

14///
15[WebMethod]
16publicBookGetBook()
17{
18returnnewBook
19{
20Id=1,
21Name="三国演义",
22Author="罗贯中",
23Price=100
24};
25}

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

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

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

1///


2///将传递进来的参数转化为大写字符返回
3///

4///
5///
6[WebMethod]
7publicstringConvertToUpper(stringvalue)
8{
9returnvalue.ToUpper();
10}

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

1

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


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

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

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}

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号