flex 调用WebService2(基于.net)
flex 访问WebService的方法有很多种,使用FLEX4中的"数据/服务"功能可以自动生成访问WebService的代理类,这样可以避免把所有的数据访问都写到MXML页面上,便于重复利用,同时可以直接导入后台自定义数据类型,方便传参。
直接上代码:其中WebService接口
- namespace MyNetWebService
- {
- /// <summary>
- /// MyWebService 的摘要说明
- /// </summary>
- [WebService(Namespace = "http://tempuriTemp.org/")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- [System.ComponentModel.ToolboxItem(false)]
- // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
- // [System.Web.Script.Services.ScriptService]
- public class MyWebService : System.Web.Services.WebService
- {
- [WebMethod]
- public string HelloWorld()
- {
- return "Hello World";
- }
- [WebMethod]
- public Model[] GetDetailResult(SearchParameter parmeter, Staff staff)
- {
- return ModelHelp.GetSaleDetailResult(parmeter, staff);
- }
- }
- }
添加WebService服务:
连接数据/服务—>Web服务—>WSDL URL: 填写服务地址(http://localhost/XXX/MyWebService.asmx?WSDL)
使用FLEX4中的"数据/服务"功能 在services 下生成的代理类:
数据/服务 下 导入了webService的方法 和 自定义类型
自动生成访问WebService的代理类_Super_MyWebService.as
- /**
- * This is a generated class and is not intended for modification. To customize behavior
- * of this service wrapper you may modify the generated sub-class of this class - MyWebService.as.
- */
- package services.mywebservice
- {
- import com.adobe.fiber.core.model_internal;
- import com.adobe.fiber.services.wrapper.WebServiceWrapper;
- import com.adobe.serializers.utility.TypeUtility;
- import mx.rpc.AbstractOperation;
- import mx.rpc.AsyncToken;
- import mx.rpc.soap.mxml.Operation;
- import mx.rpc.soap.mxml.WebService;
- import valueObjects.DetailSearchParameter;
- import valueObjects.Employee;
- import valueObjects.Sale;
- [ExcludeClass]
- internal class _Super_MyWebService extends com.adobe.fiber.services.wrapper.WebServiceWrapper
- {
- // Constructor
- public function _Super_MyWebService()
- {
- // initialize service control
- _serviceControl = new mx.rpc.soap.mxml.WebService();
- var operations:Object = new Object();
- var operation:mx.rpc.soap.mxml.Operation;
- operation = new mx.rpc.soap.mxml.Operation(null, "HelloWorld");
- operation.resultType = String;
- operations["HelloWorld"] = operation;
- operation = new mx.rpc.soap.mxml.Operation(null, "GetDetailResult");
- operation.resultElementType = valueObjects.Sale;
- operations["GetDetailResult"] = operation;
- _serviceControl.operations = operations;
- try
- {
- _serviceControl.convertResultHandler = com.adobe.serializers.utility.TypeUtility.convertResultHandler;
- }
- catch (e: Error)
- { /* Flex 3.4 and eralier does not support the convertResultHandler functionality. */ }
- _serviceControl.service = "MyWebService";
- _serviceControl.port = "MyWebServiceSoap";
- wsdl = "http://localhost/XXX/MyWebService.asmx?WSDL";
- model_internal::loadWSDLIfNecessary();
- model_internal::initialize();
- }
- /**
- * This method is a generated wrapper used to call the 'HelloWorld' operation. It returns an mx.rpc.AsyncToken whose
- * result property will be populated with the result of the operation when the server response is received.
- * To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value.
- * You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.
- *
- * @see mx.rpc.AsyncToken
- * @see mx.rpc.CallResponder
- *
- * @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.
- */
- public function HelloWorld() : mx.rpc.AsyncToken
- {
- model_internal::loadWSDLIfNecessary();
- var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("HelloWorld");
- var _internal_token:mx.rpc.AsyncToken = _internal_operation.send() ;
- return _internal_token;
- }
- /**
- * This method is a generated wrapper used to call the 'GetDetailResult' operation. It returns an mx.rpc.AsyncToken whose
- * result property will be populated with the result of the operation when the server response is received.
- * To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value.
- * You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.
- *
- * @see mx.rpc.AsyncToken
- * @see mx.rpc.CallResponder
- *
- * @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.
- */
- public function GetDetailResult(parmeter:valueObjects.DetailSearchParameter, loginEmp:valueObjects.Employee) : mx.rpc.AsyncToken
- {
- model_internal::loadWSDLIfNecessary();
- var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("GetDetailResult");
- var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(parmeter,loginEmp) ;
- return _internal_token;
- }
- }
- }
自动生成访问WebService的代理类MyWebService.as
- /**
- * This is a generated sub-class of _MyWebService.as and is intended for behavior
- * customization. This class is only generated when there is no file already present
- * at its target location. Thus custom behavior that you add here will survive regeneration
- * of the super-class.
- **/
- package services.mywebservice
- {
- public class MyWebService extends _Super_MyWebService
- {
- }
- }
Flex 端Temp.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- layout="vertical" width="100%" height="100%"
- xmlns:common="common.*"
- xmlns:mywebservice="services.mywebservice.*"
- >
- <fx:Script>
- <![CDATA[
- import mx.events.FlexEvent;
- import mx.rpc.events.ResultEvent;
- import mx.rpc.soap.WebService;
- import mx.controls.Alert;
- protected function btn_call_clickHandler(event:MouseEvent):void
- {
- // TODO Auto-generated method stub
- getresult.token=MyWebService.HelloWorld();
- }
- protected function getresult_resultHandler(event:ResultEvent):void
- {
- // TODO Auto-generated method stub
- if(event.result!=null)
- {
- resultweb.text=event.result as String;
- }
- }
- ]]>
- </fx:Script>
- <!-- 引用css样式 -->
- <fx:Style source="css/style.css" />
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- <mywebservice:MyWebService id="MyWebService" showBusyCursor="true" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"/>
- <s:CallResponder id="getresult" result="getresult_resultHandler(event)" />
- </fx:Declarations>
- <s:VGroup width="100%" height="100%" paddingLeft="" paddingRight="" paddingBottom="" paddingTop="">
- <s:HGroup width="100%" verticalAlign="middle">
- <mx:Text id="resultweb"/>
- <common:Cbutton id="btn_call" label="调用webService" click="btn_call_clickHandler(event)" />
- </s:HGroup>
- <s:HGroup width="100%" verticalAlign="middle">
- <s:Label verticalAlign="middle" styleName="msgTxtStyle" width="100%" id="msg_label"/>
- </s:HGroup>
- </s:VGroup>
- </mx:Module >
运行结果:
flex 调用WebService2(基于.net)的更多相关文章
- flex 调用WebService1(基于.net)
以.net平台下C#语言开发的WebService为web服务,使用flex actionscript语句访问webservice接口 Flex: Temp.mxml部分代码 //调用WebSer ...
- Flex调用java webservice
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- Flex 调用webService
今天手头没事,就学习下 Flex 调用webService的方法.本地测试OK 和大家分享下. ——————————————————————————————————————————————————— ...
- Flex与Java交互(Flex调用java类展示数据)解析xml展示数据
Flex与java通信最简单例子(详细说明了各种需要注意的配置):http://blog.csdn.net/u010011052/article/details/9116869 Flex与java通信 ...
- flex调用JS报安全沙箱错误解决办法
flex调用JS方法弹窗时一般会报安全沙箱错误,只要将被调用的JS方法设置延时就可解决. function openKqQuery(){ window.showModalDialog("pa ...
- Flex调用JavaScript获取文件路径
Flex的Web中有FileReference的类可以对文件操作,实现上传.下载的功能,但是没有办法获取到文件的路径. 普遍的方法是Flex调用JavaScript的文件浏览功能来获取文件路径. 1. ...
- flex 调用gp服务
同步异步说明: gp服务分为同步和异步两种模式,两者的区别是:同步:适合于快速的处理,数据量较小,本质区别在于同步模式,服务器处理之后,处理结果并不在服务器端保存,而是将结果发送至客户端,由客户端去显 ...
- flex调用webservice中的datatable结果写入datagrid
webservice配置文件 <appSettings> <add key="sqlConDuke" value="server=10.9.34.88; ...
- JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...
随机推荐
- jquery的uploadify上传jsp+servlet
1.准备材料:下载jquery.uploadify上传js 注意:这个上传在firefox下会出现问题如果你在项目中加了拦截器,因为session会丢失,所以你可以传参的时候带上你所需要的条件,在 ...
- slf4j教程
slf4j只是一个门面(facet),它不包含具体的实现,而是将一些log4j,java.logging等实现包装成统一的接口.借用下图展示了常用日志文件的关系: 通过上面的图,可以简单的理清关系! ...
- 16-js-缓冲运动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- html5 百分比计算
这几天一直在看html5,看到了百分比的计算公式:目标元素的尺寸/上下文元素的尺寸=百分比尺寸.看到这个公式,有点懂,但是有不明白.对于目标元素很容易理解,但是对于上下文元素就不是很好理解了.试了一些 ...
- css 溢出文本显示省略号
这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网 ...
- 递归:这帮坑爹的小兔崽子 - 零基础入门学习Python023
递归:这帮坑爹的小兔崽子 让编程改变世界 Change the world by program 斐波那契数列的递归实现 这节课我们用斐波那契(Fibonacci)数列的递归实现来作为第一个例子吧,斐 ...
- AngularJS中的控制器示例_3
<!doctype html> <html ng-app="myApp"> <head> <script src="C:\\Us ...
- 2014年总结:我的IT路
又是一年春节时,转眼之间已经毕业4年,简单回顾一下这几年的职业生涯,希望大家提出宝贵意见. 大学时,几个同学跟着学校网络中心的老师一块做校园网上运行的小系统.偶尔协助一下老师对学校机房.校园网做一下维 ...
- dubbo初体验
最近需要开发部门中某个大数据量的提取的功能,加到了一个ElasticSearch的群.在群里听说到一个框架叫dubbo,阿里系开源软件.听到群友谈的神乎其神的,什么什么功能切分多协议栈,高并发等等等. ...
- 【转】Linux中history历史命令使用方法详解
原文网址:http://os.51cto.com/art/201205/335040.htm 当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效 ...