解析flex的RemoteService的Endpoint

来源:互联网 发布:淘宝开网店收费吗 编辑:程序博客网 时间:2024/05/22 08:28

做flex远程交互的时候,使用RemoteObject要设置其端点属性,如果在根节点,那么直接使用“/messagebroker/amf”就可以了,但是,如果应用发布在webapp文件夹下面,那么上面指定的endpoint就要报错了,此时必须显式指定endpoint。但是“写死”的方式不够灵活,所以要灵活去指定就必须解析URL了。

下面该类是本人提供的一个可以解析endpoint的类。

/*********************************************** **** 版权声明处 ** ****  为了方便阅读和维护,请严格遵守相关代码规范,谢谢   **** *******************************************/package com.hnisi.screen.common{import mx.core.FlexGlobals;import mx.utils.URLUtil;/******************************************* **** huangjixin,2012-5-24,下午1:30:53 ** **** 全局静态类,可用于保存相关的静态变量或常量  ** *******************************************/[Bindable]public class Global{//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// private 类私有静态变量和静态常量声明处。(全部大写,使用下划线进行分割)// 例如:private static const EXAMPLE:String = "example";//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/private static var _instance:Global;//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// public 类公有静态变量和静态常量声明处。(全部大写,使用下划线进行分割)// 例如:public static const EXAMPLE:String = "example";//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/public var endPoint:String = "http://localhost:8080/gdds_portal/messagebroker/amf";public var url:String = "";public var appFileUrl:String = "http://localhost:8080/gdds_portal/hall_swf/gdds_portal.swf";public var frequency:Number = 900000;//定时播放频率;public var autoPlayFrequent:Number = 900000;//自动播放频率public var basicValue:Number = 34;//基准值public var isWeb:Boolean;//是否基于web;//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// private 私有变量声明处,请以“_”开头定义变量// 例如:private var _example:String;//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_///_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// public 公有变量声明处//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_///_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// 构造函数,初始化相关工作可以放在里面//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/public function Global(){if(_instance){throw new Error("请使用getInstance函数");}}//构造函数结束//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// getter和setter函数//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_///_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// 相关事件响应函数和逻辑函数存放处//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/public static function getInstance():Global{if (!_instance){_instance = new Global();}return _instance; }/** * 通过解析URL,設置endPoint属性  * @return  *  */public function setUrl():Boolean{var url:String = "";var endPoint:String = "";url = FlexGlobals.topLevelApplication.url;var isHttpUrl:Boolean = URLUtil.isHttpURL(url);if(!isHttpUrl){return false;}//解析协议;var protocol:String = URLUtil.getProtocol(url);//解析服务器和端口;var serverNameWithPort:String = URLUtil.getServerNameWithPort(url);endPoint = protocol + "://"+serverNameWithPort;//解析应用路径;var array:Array = url.split("/");if(array && array.length>4){endPoint+="/"+array[3];}Global.getInstance().endPoint = endPoint + "/"+'messagebroker/amf';Global.getInstance().isWeb = isHttpUrl;return true;}//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/// override 覆盖函数//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/}//类结束}//包结束