20.6.BrowserManager解析URL

20.6.1 问题
我想从浏览器的当前URL 中读取并解析数据。
20.6.2 解决办法
使用BrowserManager 和URLUtil 类读取并解析当前页面的URL。
20.6.3 讨论
下面的例子展示了如何通过使用BrowserManager 和URLUtil 类读取并解析当前页URL,同时将解析结果写入一个mx:TextArea 实例中。

URLUtil 类拥有可以帮助你解析当前URL 内不同片断的方法。在Flex 3中使用深度链接的时候,URL 会段为两个部分:基部(base)和片段(fragment)。URL 基部(base)包含了#号左边的所有内容。片段(fragment)则包含了#号右边所有的内容。片段(fragment)用以传递参数给Flex 应用程序或者用于历史管理器。适当创建的片段(fragment) 可以由URLUtil.stringToObject 方法将其包含的所有参数值解析到ActionScript 对象中去,再打散成字符串值。URL 片段(fragment)的每个键-值对都应该用分号(;)分隔开。
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="absolute"
creationComplete="parseURL()">

<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
import mx.managers.IBrowserManager;
import mx.managers.BrowserManager;
import mx.utils.URLUtil;
private function parseURL() : void
{
//get an instance of the browser manager
var bm:IBrowserManager = BrowserManager.getInstance();
//initialize the browser manager
bm.init();
//output the url parameter values
output.text += "Full URL:\n" + bm.url + "\n\n";
output.text += "Base URL:\n" + bm.base + "\n\n";
output.text += "URL Fragment:\n"+bm.fragment+ "\n\n";
//convert url parameters to an actionscript object using URLUtil
var o:Object = URLUtil.stringToObject(bm.fragment);
output.text+="Object:\n"+ObjectUtil.toString(o)+ "\n\n";
output.text += "name:\n" + o.name + "\n\n";
output.text += "index:\n" + o.index + "\n\n";
output.text += "productId:\n" + o.productId + "\n\n";
//parse URL using URLUtil
output.text += "URL Port:\n" +
URLUtil.getPort( bm.url ) + "\n\n";
output.text += "URL Protocol:\n" +
URLUtil.getProtocol( bm.url ) + "\n \n";
output.text += "URL Server:\n" +
URLUtil.getServerName( bm.url ) + "\n\n";
output.text += "URL Server with Port:\n" +
URLUtil.getServerNameWithPort( bm.url );
}

]]>
</mx:Script>
<mx:TextArea id="outputleft="10top="10bottom="10right="10"/>
</mx:Application>

如果前面的例子有如下的
URLhttp://localhost:8501/flex3cookbook/main.html#name=Andrew;index=12345;productId=987,结果将会是这样:

Full URL:
http://localhost:8501/flex3cookbook/main.html#name=Andrew;index=12345;productId=987

Base URL:
http://localhost:8501/flex3cookbook/main.html

URL Fragment:
name=Andrew%20Trice;index=12345;productId=987654

Object:
(Object)#0
index = 12345
name = "Andrew"
productId = 987
name:
Andrew
index:
12345
productId:
987
URL Port:
8501
URL Protocol:
http
URL Server:
localhost
URL Server with Port:
localhost:8501

加支付宝好友偷能量挖...


评论(0)网络
阅读(98)喜欢(0)flash/flex/fcs/AIR