解析flex的RemoteService的Endpoint

做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 覆盖函数
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
	}//类结束
}//包结束


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值