URL中莫名其妙出现的[[DYNAMIC]]
今天在用Flex4.6写的外壳加载3.6写的旧项目文件时,出现如下情况,要加载的文件用相对路径访问:
config/config.xml
`</pre>
然而,发现在加载时发送的请求是如下莫名其妙的URL:
<pre>` http://yourDomain.com/yourSwf.swf?/[[DYNAMIC]] /config/config.xml
`</pre>
这是要闹哪样啊!!!我儿子还等我下班回去给他买果泥啊!!掀桌子!!
冷静下来之后,一步步移除,尝试了降级指定的FlashPlayer版本,移除新引入的swc,都没成功,然后我注意到,之前编写的XMLLoader是依赖于mx.rpc.http.mxml.HTTPService 实现功能的,这个Flex从3.x向4.x升级时发生了很大变化,是不是这货不灵了。
于是马上替换了用URLLoader实现的版本,结果马上奏效了,上代码!
<pre>` package
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
public class XMLDataLoader
{
private var callBack:Function;
private var loader:URLLoader;
public function XMLDataLoader(url:String,callBack:Function)
{
this.callBack = callBack;
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE,getXML);
loader.addEventListener(IOErrorEvent.IO_ERROR,ioError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityError);
loader.load(new URLRequest(url));
}
protected function securityError(event:SecurityErrorEvent):void
{
callBack(null);
}
protected function ioError(event:IOErrorEvent):void
{
callBack(null);
}
private function getXML(e:Event):void
{
callBack(XML(URLLoader(e.target).data));
}
}
}
框架还是不如自己写的靠谱,家中再有不如一技在手。