`
tcf171jl
  • 浏览: 30655 次
社区版块
存档分类
最新评论

Flex中使用HttpService和WebService方式通信

 
阅读更多

  HttpService、WebService、RemoteObject是Flex中使用的三种通信方式,由于RemoteObject对服务器端环境的要求,最常用的还是前两种通信方式。这里仅对Webservice和HttpService这两种方式做简单封转演示。
  WebService: package com.sample.Service { import mx.rpc.AbstractOperation; import mx.rpc.events.ResultEvent; import mx.rpc.soap.WebService; import mx.rpc.soap.Operation; import mx.core.mx_internal; use namespace mx_internal; public dynamic class WServiceProxy extends WebService { publicfunction WServiceProxy(destination:String=null,rootURL:String=null) { super(destination,rootURL); } publicfunction GetMethod(FunctionName:String,CallBack:Function=null):AbstractOperation{ var OP:AbstractOperation=this.getOperation(FunctionName); if(CallBack!=null) OP.addEventListener(ResultEvent.RESULT,CallBack); return OP; } override publicfunction getOperation(name:String):AbstractOperation{ var op:Operation = new Operation(this, name); op.asyncRequest = asyncRequest; super.initializeOperation(op as Operation); if(op.wsdlOperation==null){//WSDL加载未完成,则使用基类提供的Operatereturnsuper.getOperation(name); } return op; } /**调用示例 ws=new WebService(); ws.wsdl="http://localhost/ws/webService1.asmx?wsdl "; ws.loadWSDL(); //方法一 无参数型 声明 OP=ws.getOperation("HelloWorld"); OP.addEventListener(ResultEvent.RESULT,ret); OP.send("a1-","B1"); //调用 //方法二 直接使用型 声明 ws.Login.addEventListener(ResultEvent.RESULT,ret1) ; ws.Login("a","b"); * */
  HttpService: package com.sample.Service { import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; public dynamic class HServiceProxy { privatevar comm:FwConfig = FwConfig.Instance; privatevar m_url:String; //远程调用地址publicfunction HServiceProxy(destination:String,rootURL:String=null) { if(destination.length>5 && destination.substr(0,5).toLowerCase()=="http:"){ m_url = destination; //全路径 } else{ m_url = "http://127.0.0.1"+destination; //构造url全路径 } } //获取操作方法publicfunction GetMethod(FunctionName:String="Default", CallBack:Function=null,ErrorCallBack:Function=null):HServiceOperate{ var OP:HServiceOperate=new HServiceOperate(m_url,FunctionName); if(CallBack!=null) OP.addEventListener(ResultEvent.RESULT,CallBack); if(ErrorCallBack!=null) OP.addEventListener(FaultEvent.FAULT,ErrorCallBack ); return
  HServiceOperate: package com.samle.Service { import mx.collections.ArrayCollection; import mx.rpc.AsyncToken; import mx.rpc.Responder; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; import mx.rpc.events.AbstractEvent; import flash.events.EventDispatcher; /** * Dispatched when an Operation invocation successfully returns. * @eventType mx.rpc.events.ResultEvent.RESULT */ [Event(name="result", type="mx.rpc.events.ResultEvent")] /** * Dispatched when an Operation call fails. * @eventType mx.rpc.events.FaultEvent.FAULT */ [Event(name="fault", type="mx.rpc.events.FaultEvent")] public dynamic class HServiceOperate extends EventDispatcher { privatevar m_url:String; //远程调用地址privatevar m_paras:ArrayCollection;//远程调用参数privatevar m_opName:String="Default"; //调用方法publicfunction HServiceOperate(url:String,FunctionName:String=null) { m_url = url; if(FunctionName!=null) m_opName = FunctionName; } //调用publicfunction call(paras:ArrayCollection=null):void { m_paras = paras; var url:String=m_url; var para:String = ParametersAsQueryString; if(para!=null && para.length>0) //参数 url = url+"?"+para; var httpObject:HTTPService = new HTTPService(); //实例化 httpObject.resultFormat = "text";//"xml" ;//"object" //"text";//返回格式 httpObject.url = url; var responder:Responder = new Responder(onSuccess, onError);//回调方法var call:AsyncToken = httpObject.send(); //发送请求 call.addResponder(responder); } //调用成功privatefunction onSuccess(event:ResultEvent):void { dispatchRpcEvent(event); } //调用失败privatefunction onError(event:FaultEvent):void { dispatchRpcEvent(event); } ///参数转换为QueryStringprivatefunction get ParametersAsQueryString():String { var QString:String=""; if(m_paras!=null && m_paras.length>0) { for(var i:int=0;ilength;i++) { QString+=m_paras[i].name+"="+m_paras[i].value+"&"; } QString = QString.substr(0,QString.length-1); } if(m_opName!=null && m_opName!="Default")//添加了命令 { var op:String="op="+m_opName; if(QString.length==0){ QString=op; }else{ QString=op+"&"+QString; } }
分享到:
评论

相关推荐

    Flex4.0 如何通过 HttpService和WebService与服务器进行通信

    flex通过Http和WebService与服务器通信交互,交互后台采用java的Struts2做为处理后台.

    flex4与Java通信实例

    flex4出来一段时间了,去年看了一段时间flex3,后来由于暂时没有项目需求.所以flex遗忘了很多.这次使用flex4+myeclipse8.5录制了一个视频.以免时间长了遗忘. 软件环境:windows7+... 3 flex与webservice交互WebService

    Flex HTTPService with ASP.NET.zip

    本教程旨在演示在帶有ASP.NET的Flex 2+中HTTPService功能的使用。 Adobe Flex中有許多方法可以與ASP.NET(或簡單地說,服務器端語言)進行通信。 HttpService,WebService,WebORB,FluorineFx等。在本教程中,我僅...

    flex之低数据量通信实例源码

    flex之低数据量通信实例源码,包括上传、下载、HTTPservice、webservice等

    Flex与处部的数据通信和图表

    4.1 Flex与处部的数据通信 4.1.1 使用HTTPService 4.1.2 使用WebService 4.1.3 使用Remoting 4.2 Flex图表 4.2.1 使用饼形图呈现数据 4.2.2 使用折线图呈现数据 4.2.3 使用柱形图呈现数据 4.2.4 向图表添加动画 ...

    flexdemo示例有兴趣可以看看

    flexdemo示例有兴趣可以看看 1 flex 与普通java类通信RemoteObject 2 flex 与服务器交互HTTPService 3 flex与webservice交互WebService

    FLEX数据与通讯

    介绍flex的通信方面的知识,有关httpservice,webservice服务相关方面的知识。

    如何做好Flex与Java交互

    三种flex4与Java顺利通信的方式是:  flex与普通java类通信RemoteObject;  flex与服务器交互HTTPService;  flex与webservice交互WebService。  当大家尝试使用flex与普通java类通信时,一般用RemoteObject...

    Flex新手教程_入门级学习笔记

    5.2.2 Flex访问WebService 32 6 BlazeDS与服务端通信 33 6.1什么是BlazeDS 33 6.2配置BlazeDS,并使之正常运作 34 6.3创建一个Java项目,用来充当Server 34 6.4配置BlazeDS 35 6.5 新建一个Flex应用程序,测试连接 35 ...

    flex3的cookbook书籍完整版dpf(包含目录)

    与WebService通信 18.10节. 添加SOAP头到WebSerice请求 18.11节. 解析WeBService的返回的SOAP响应 18.12节. 使用SecureAMFChannel进行AMF的安全通信 18.13节. 通过二进制Socket发送和接收二进制数据 18.14节. ...

    Flex和.NET协同开发利器FluorineFx Flex与.NET互操作

    在本系列前面几篇文章中分别介绍了通过WebService、HTTPService、URLLoader以及FielReference等组件或类来完成Flex与.NET服务端的通信的相关知识点。

Global site tag (gtag.js) - Google Analytics