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

本文以.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返回对象到客户端的调用。

(0)

相关推荐

  • asp.net类库中添加WebService引用出现问题解决方法

    在Web项目内添加WebService的引用是件很简单的事情,今天在类库中添加WebService引用时候,却遇到了问题,特此记录下来. 1.添加服务引用. 2.点击高级 3.添加Web引用 4.看到了就跟Web项目添加WebService一样了 添加完成后,再次点击 添加引用就出现了添加Web引用了

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

    使用WebService类来访问WebService其实也就是将<mx:WebService>标签的属性通过类对象的属性形式来表示,相比之下使用WebService类比使用<mx:WebService>标签要灵活.下面我们来看看编程方式怎么连接和调用远程方法: 1     internal function onClick():void2     {3         var service:WebService = new WebService();4         servi

  • WebService出现"因 URL 意外地以 结束,请求格式无法识别"的解决方法

    说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.InvalidOperationException: 因 URL 意外地以"/GetReceivedInvoices"结束,请求格式无法识别. 源错误: 执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 已解决,要在webservice的 <system.web&

  • asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码

    首先贴上Jquery的ajax: 复制代码 代码如下: $.ajax({ url: 'ws_Ajax.asmx/BindDictByUpper', type: 'POST', contentType: 'application/json;charset=utf-8', dataType: 'json', data: '{ PpareId:"' + varlue + '"}', success: function (data) { var dataObj = eval("(&q

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

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

  • ASP.NET2.0中数据源控件之异步数据访问

    在第 1 部分和第 2 部分中,建立了 WeatherDataSource 控件,该控件针对 weather.com(英文)所提供的 XML API 来运行,使用 WebRequest 和 WebResponse 来通过 HTTP 访问数据.迄今为止,均是同步访问该服务.因此,页面处理被阻止,直到 Web 请求完成为止.此方法对于测试页面是有效的,在小站点上也可能有效,但是在接收大量通信流量的站点上则会惨败:例如门户页面,天气模块在其中可能非常常见. 引言 在线程池中有固定不变的大量线程可用于服

  • 在ASP.NET 2.0中操作数据之一:创建一个数据访问层

    导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研究在ASP.NET 2.0中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇.我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的DataSet的数据访问层(DAL),一个实施用户定义的业务规则的业务逻辑层(BLL),以及一个由共享页面布局的ASP.NET网页组成的表现层.在打下这个后端的基础工作之后,我们将开始转向报表,示范如何显示,汇总

  • Yii学习总结之数据访问对象 (DAO)

    Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DAO开发的应用程序可以很容易地切换使用不同的数据库管理系统,而不需要修改数据访问代码. 数据访问对象(DAO) 对访问存储在不同数据库管理系统(DBMS)中的数据提供了一个通用的API. 因此,在将底层 DBMS 更换为另一个时,无需修改使用了 DAO 访问数据的代码. Yii DAO 基于 PHP

  • Golang+Android基于HttpURLConnection实现的文件上传功能示例

    本文实例讲述了Golang+Android基于HttpURLConnection实现的文件上传功能.分享给大家供大家参考,具体如下: 这里要演示的是使用Android程序作为客户端(使用HttpURLConnection访问网络),Golang程序作为服务器端,实现文件上传. 客户端代码: public static String uploadFile(String uploadUrl, String filePath) { Log.v(TAG, "url:" + uploadUrl)

  • 基于Ajax技术实现文件上传带进度条

    1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度,可以在上传文件的同时,显示文件的上传进度条.运行本实例,如图1所示,访问文件上传页面,单击"浏览"按钮选择要上传的文件,注意文件不能超过50MB,否则系统将给出错误提示.选择完要上传的文件后,单击"提交"按钮,将会上传文件并显示上传进度. 2.技术要点 主要是应用开源的Common-FileUpload组件来实现分

  • 在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法

    本文较为详细的讲述了在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法,分享给大家供大家参考之用.具体方法如下: 在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处理:一般情况下,我们把中文对照信息放到业务类里面去统一解析,但是这样会导致每次WCF访问方式请求解析中文化的操作耗费一定的响应时间.如果使用缓存存储中文字段的对照表,那么

  • Java基于final修饰数据过程解析

    这篇文章主要介绍了Java基于final修饰数据过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 final是Java中的一个重要关键字,它可以修饰数据.方法和类,本篇将从final修饰的数据角度对final做出总结. final修饰的数据代表着:永远不变.意思是,一旦你用final修饰一块数据,你之后就只能看看它,你想修改它,没门. 我们不希望改变的数据有下面两种情况: 永不改变的编译时常量. //编译时知道其值 private fin

  • vue2中基于vue-simple-upload实现文件分片上传组件功能

    本文最主要参考的是这一篇,后端也是用django来完成. 大文件上传(秒传/断点续传)_使用Vue-Simple-Uploader插件 --Vue/Django完整实现 https://www.jb51.net/article/206178.htm 参考的代码地址:https://github.com/ClearlightY/FileUpload vue-simple-upload文档:https://github.com/simple-uploader/Uploader <template>

随机推荐