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

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

首先看看如下代码块:
复制代码 代码如下:

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

wsdl属性指定到要访问的WebService的wsdl地址既可,其中定义了两个操作标签 (<mx:operation>),分别对应于WebService中定义的WebMethod方法。result属性标记访问 WebService方法成功后的处理函数;fault则相反,指定于访问失败的处理函数。以上两个<mx:operation>对应于 WebService的WebMethod方法如下:
/// <summary>
/// 返回字符串
/// </summary>
/// <returns></returns>
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}

/// <summary>
/// 返回一个简单对象
/// </summary>
/// <returns></returns>
[WebMethod]
public Book GetBook()
{
return new Book
{
Id = 1,
Name = "三国演义",
Author = "罗贯中",
Price = 100
};
}

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

<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

/**
* 向WebService发起请求--调用HelloWorld方法,dataService为<mx:WebService>的id
* */
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失败!");
}
]]>
</mx:Script>

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

/// <summary>
/// 将传递进来的参数转化为大写字符返回
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[WebMethod]
public string ConvertToUpper(string value)
{
return value.ToUpper();
}

通过在<mx:WebService>标签下配置<mx:operation>执行该方法就可以访问了,如下:
<mx:operation name="ConvertToUpper" result="onSuccess(event)" fault="onFault(event)"/>
/**
* 向WebService发起请求
* */
internal function onRequest():void
{
//dataService.HelloWorld();
dataService.ConvertToUpper("abcdefg");
}


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

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

internal function onObject():void
{
dataService.GetBook();
}

internal function onObjectSuccess(evt:ResultEvent):void
{
//直接通过事件的result属性得到返回值,然后直接访问属性便OK
Alert.show(evt.result.Name);
}

/**
* 请求失败的处理函数
* */
internal function onFault(evt:FaultEvent):void
{
Alert.show("访问WebService失败!");
}

如上便完成了服务端的WebService返回对象到客户端的调用。
更多精彩内容其他人还在看

Flex 放大镜效果实现代码

Flex 放大镜效果实现代码
收藏 0 赞 0 分享

Flex 读取xml文件的方法

Flex 读取xml文件的多种方法小结,大家可以根据需要自己选择。
收藏 0 赞 0 分享

Flex 性能优化常用手法总结

随着Flex越来越多的被人们所熟知,越来越多的互联网也开始了RIA应用。
收藏 0 赞 0 分享

Flex Data Binding详解

Data BindIng简单的说就是当绑定源属性发生变化时,Flex 会把绑定源变化后属性的值赋给目的物的属性。做到了数据同步。
收藏 0 赞 0 分享

Flex 全屏组件 部分全屏的实现代码

一般情况下,Flex全屏是指将整个舞台全屏,而不是待定的组件全屏.网上的例子也一般是指这种情况的.
收藏 0 赞 0 分享

关于Flex 初始化的research

前些天在写一个自定义的UI组件的时候,发现在override createChildren的,只能取到基本类型的自定义变量,而取不到Object类型的自定义变量。
收藏 0 赞 0 分享

flex 简单例子(含实例效果图 源码)

要过节了,工作任务也完成了,闲来没事,研究svg,感觉市场上对svg支持度不高,导致了这项技术不能够被IT群众充分的接纳,一个没有人支持的技术,她必然也不会有很大的前景。研究来研究去,还是觉得flex比较好玩。
收藏 0 赞 0 分享

Flex3 界面布局教程

国庆期间,做了不少基于 flex 的开发工作,对 flex 的布局容器有了进一步深入的理解,也找到不少非常棒的文章,分享到这里方便一下大家。
收藏 0 赞 0 分享

Flex3 界面布局教程 第二篇

国庆期间,做了不少基于 flex 的开发工作,对 flex 的布局容器有了进一步深入的理解,也找到不少非常棒的文章,分享到这里方便一下大家。
收藏 0 赞 0 分享

Flex 3 布局容器学习笔记 整理

国庆期间,做了不少基于 flex 的开发工作,对 flex 的布局容器有了进一步深入的理解,也找到不少非常棒的文章,分享到这里方便一下大家。
收藏 0 赞 0 分享
查看更多