首页 »Flash教程 » flex调用js:Flex扩展HTTPService简化调用接口定义 »正文
flex调用js:Flex扩展HTTPService简化调用接口定义
来源: 发布时间:星期四, 2009年2月12日 浏览:97次 评论:0
Flex提供MXML来描述 ![](/icons/61204yi.gif) 个HTTPService ![](/icons/61204dou.gif) 看上可以简化开发人员 ![](/icons/61204de.gif) 工作 ![](/icons/61204dou.gif) 但实际上这种描述HTTPService ![](/icons/61204de.gif) 方式很容易产生重复代码导致代码不好维护和扩展 ![](/icons/61204dou2.gif) 数据交互接口唯 ![](/icons/61204yi.gif) 定义对系统 ![](/icons/61204de.gif) 维护非常有利 ![](/icons/61204dou.gif) 但基于AS定义HTTPService也是 ![](/icons/61204yi.gif) 件烦琐 ![](/icons/61204de.gif) 事情;那如何做才能够达到方便地定义接口呢 接口定义 以下是定义 ![](/icons/61204yi.gif) 个登陆 ![](/icons/61204de.gif) 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; } 看上非常简单 ![](/icons/61204dou.gif) 只需要继承HttpBase然后效需要提交 ![](/icons/61204de.gif) 参数定义成Public成员即可以 ![](/icons/61204dou2.gif) 对于构造 ![](/icons/61204hanshu.gif) 参数下介绍HttpBase ![](/icons/61204de.gif) 时候讲述;对于这个接口又是怎样 ![](/icons/61204diaoyong.gif) ![](/icons/61204de.gif) 呢 ![](/icons/61204dou2.gif) 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 ; 如果并不想考虑太多处理 ![](/icons/61204dou.gif) 只关心登陆处理可以这样定义
var send:ILogin = ILogin ; send.UserName= txtName.text; send.UserPWD=txtPWD.text; send.ImgKey= ic.ImageKey ; send.ImgSN=ic.ImageSN ; send.Open ; 服务端代码 对于服务端代码就可以根据自己需来处理 ![](/icons/61204dou.gif) jsp,asp,asp.net,php都是 ![](/icons/61204yi.gif) 样只要接收http请求即可 ![](/icons/61204dou2.gif) 为了便于理解把服务端代码顺便贴出来: [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 ![](/icons/61204de.gif) 定义 该HttpBase是针对本人现有需求所制定 ![](/icons/61204de.gif) ![](/icons/61204dou.gif) 所以并不 ![](/icons/61204yi.gif) 定适合你 ![](/icons/61204de.gif) 需要;但作为 ![](/icons/61204yi.gif) 个参考 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); } } 代码也非常简单 ![](/icons/61204dou.gif) 就是在httpservice ![](/icons/61204de.gif) 基础上包装 ![](/icons/61204yi.gif) 下 ![](/icons/61204dou2.gif) 其实了解AS ![](/icons/61204de.gif) 朋友应该可以看得出对于动态语言来说直接把HttpBase定义成动态类 ![](/icons/61204dou.gif) 然后直接设置成员提交这样就省下每个交互都定义 ![](/icons/61204yi.gif) 个类型出来这么麻烦 ![](/icons/61204dou2.gif) 但作为 ![](/icons/61204yi.gif) 个服务接口 ![](/icons/61204diaoyong.gif) 成员越明确越好 ![](/icons/61204dou.gif) ![](/icons/61204yinwei.gif) ![](/icons/61204chengxu.gif) 是要经常修改和维护 ![](/icons/61204de.gif) ;不过是不是要这样做就是团队(Team)约束规范标准问题了
相关文章
读者评论
发表评论
|
|