首页 »Flash教程 » flex调用js:Flex扩展HTTPService简化调用接口定义 »正文
flex调用js:Flex扩展HTTPService简化调用接口定义
来源: 发布时间:星期四, 2009年2月12日 浏览:97次 评论:0
Flex提供MXML来描述 个HTTPService 看上可以简化开发人员 工作 但实际上这种描述HTTPService 方式很容易产生重复代码导致代码不好维护和扩展 数据交互接口唯 定义对系统 维护非常有利 但基于AS定义HTTPService也是 件烦琐 事情;那如何做才能够达到方便地定义接口呢 接口定义 以下是定义 个登陆 HTTPService public ILogin extends HttpBase { public function ILogin(method:String="get", result:Function=null) { super("userlogin", method, result); } public var UserName:String; public var UserPWD:String; public var ImgSN:String; public var ImgKey:String; } 看上非常简单 只需要继承HttpBase然后效需要提交 参数定义成Public成员即可以 对于构造 参数下介绍HttpBase 时候讲述;对于这个接口又是怎样 呢 var send:ILogin = ILogin( "get",function(data:XML,error:Boolean){ (!error) { } }); send.UserName= txtName.text; send.UserPWD=txtPWD.text; send.ImgKey= ic.ImageKey; send.ImgSN=ic.ImageSN; send.Open; 如果并不想考虑太多处理 只关心登陆处理可以这样定义
var send:ILogin = ILogin; send.UserName= txtName.text; send.UserPWD=txtPWD.text; send.ImgKey= ic.ImageKey; send.ImgSN=ic.ImageSN; send.Open; 服务端代码 对于服务端代码就可以根据自己需来处理 jsp,asp,asp.net,php都是 样只要接收http请求即可 为了便于理解把服务端代码顺便贴出来: [NClay.Web.Service.ActionMapper] public UserLogin : ActionBase { protected override void _disibledevent=> (user null) throw Exception("用户名或密码不正确!"); (user != null && !user.Enabled) throw Exception("用户已经被系统禁用,请和管理员联系!"); mLoginer = user; mIsLogin = mLoginer != null; FormsAuthentication.SetAuthCookie(Loginer.UserName, true); LoginID = Loginer.UserID; LoginName = Loginer.UserName; base.OnGet; } public UserName { get; ; } public UserPWD { get; ; } [NClay.Web.Service.OutputXml] public LoginID { get; ; } [NClay.Web.Service.OutputXml] public LoginName { get; ; } public NClay.Web.Actions.ImageValidate ImageValidate { get; ; } }
HttpBase 定义 该HttpBase是针对本人现有需求所制定 所以并不 定适合你 需要;但作为 个参考 public HttpBase { private var mService:HTTPService=null private var mResult:Function=null; private var mFristSearch:Boolean=false; public var _TimeSlice:Date; public function GetService:HTTPService { mService; } public function HttpBase(api:String,method:String="get",result:Function=null) { mService = HTTPService; mService.useProxy=false; mService.url=GetServiceUrl+api; mService.resultFormat="e4x"; mService.method=method; mService.addEventListener(FaultEvent.FAULT,HFSoftCoreFun.onFault); mService.addEventListener(ResultEvent.RESULT,OnResult); mResult=result; } protected virtual function GetServiceUrl:String { "service.aspx?do="; } private function _disibledevent=> var iserror:Boolean=HFSoftFx.HFSoftCoreFun.IsError(data); (mResult!=null) mResult(data,iserror); } public function get FirstSearch:Boolean { mFristSearch; } public function Open(firstSearch:Boolean=false) { _TimeSlice = Date; mFristSearch=firstSearch; mService.send(this); } } 代码也非常简单 就是在httpservice 基础上包装 下 其实了解AS 朋友应该可以看得出对于动态语言来说直接把HttpBase定义成动态类 然后直接设置成员提交这样就省下每个交互都定义 个类型出来这么麻烦 但作为 个服务接口 成员越明确越好 是要经常修改和维护 ;不过是不是要这样做就是团队(Team)约束规范标准问题了
相关文章
读者评论
发表评论
|
|