众所周知,由于Flash8.0以上版本的沙箱问题,使得Player无法直接获取其他网站上的资源,即使那些资源可以通过HTTP来访问. 该作者使用JSP做为中转程序,间接通过本机JSP网页获取对方服务器数据,再提供给本机的SWF来使用,这个想法可以说的确很有新意.
来源:make by 蜘蛛 协助: 元素,白茶
//下面是程序范例
http://flex.icptj.com:8080/zdic.mxml <script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
※适用于想利用AS3或AS2进行垮域加载网页而又受到安全沙箱 的限制时,即可使用本中传站 以下以as3为例来演示用法: |
1.先调用本站的安全策略文件 (http://flex.icptj.com:8080/system/loadPolicyFile.xml):
|
Security.loadPolicyFile(http://flex.icptj.com:8080/system/loadPolicyFile.xml);
|
2.之后就可以用URLLoader来加载本中转页:
|
var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("http://flex.icptj.com:8080/systemt/Security");
|
3.最后一步就是用post或get方法传递几个参数过来:
|
var vars:URLVariables=new URLVariables(); vars.url="http://www.xxx.xxx"; //这参数为你要加载的目标网页地址 vars.method="POST/GET"; // 对目标网页使用POST或GET方法传递参数 vars.args="key1=value1;key2=value2"; //对目标网页传递的参数, "="号左边的是参数名,"="右边的是值,每组参数间用";"号隔开 vars.meta="key1=value1;key2=value2"; //设置一般请求属性。 key-用于识别请求的关键字,value-与该键关联的值。 此叁数可以不设置 vars.encoding="urf-8"; //设置字符编码 ,默认是utf-8; request.data=vars; loader.load(request);
/** * 注意,当参数中有中文时,FLASH内一定要使用UTF-8码 * 即: * System.useCodePage=true; * 一定要为ture,否则服务器接收参数时会出来乱码 */
|
4.如无意外,你已经取得目标网页上的数据
|
你也可以直接在网页上测试本中转站的实现效果, 如,通过中转取得百度上的查找的数据,我要查找的关键字是"swf", 可向百度用get方法传递参数wd=swf,具体实现如下: http://flex.icptj.com:8080/system/Security?url=http://www.baidu.com/s&args=wd=swf&encoding=gb2312&method=GET 直接在IE上打开此地址可得到效果,因为百度使用gb2312编码,所以encoding=gb2312, 如果要像多个args参数,可以用";"号隔开,如args=wd=swf;bs=flex 以下是FLEX的实现效果: 汉语字典: http://flex.icptj.com:8080/zdic.mxml 拼音转换+真人发音: http://flex.icptj.com:8080/samplers.mxml
|