2

我正在尝试使用 URLLoader 从服务器(与 swf 相同的域)加载 XML 文件。这应该太简单了,但我收到错误 #2032:流错误

如果我跟踪 HTTP 状态事件,它只会显示status=0,尽管我已经读到 Mozilla 不向 Flash Player 提供状态代码,所以它可能没有提供信息。

我已经用 Charles 嗅探了 HTTP 流量,而 Flash 甚至没有尝试加载 url - 没有发出请求,所以它甚至没有失败。

我可以浏览到 url,它位于内部 url 上,如下所示:http://media.project:8080/audio/playlist.xml

我已经尝试在其中放置一个 crossdomain.xml(有和没有to-ports="8080"),尽管它不应该需要一个。

onOpen 和 onActivate 事件都不会触发,只有一个 HTTPStatus 和 IOError。

我已经从 Adob​​e 示例中复制了常见的 URLLoader 代码,我的看起来像这样:

    public class PlaylistLoader extends EventDispatcher
{
    public var xmlLoader:URLLoader;
    public var url:String = '';

    public function PlaylistLoader(url:String)
    {
        url = url;
        trace(url);
        xmlLoader = new URLLoader();
        xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
        xmlLoader.addEventListener(Event.COMPLETE, onResult);
        xmlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
        xmlLoader.addEventListener(Event.OPEN, onOpen);
        xmlLoader.addEventListener(Event.ACTIVATE, onActivate);
    }

    public function loadData():void {
        var req:URLRequest = new URLRequest(url);
        trace(req);
        xmlLoader.load(req);
    }

    protected function onResult(e:Event):void
    {
        var xmlData:XML = e.target.data as XML;
        parseData(xmlData);
    }

    private function httpStatusHandler(event:HTTPStatusEvent):void {
        trace("httpStatusHandler: " + event);
    }

    protected function onOpen(e:Event):void
    {
        trace(e);
    }

    protected function onActivate(e:Event):void
    {
        trace(e);
    }

    protected function onIOError(e:IOErrorEvent):void
    {
        trace(e);
    }
4

2 回答 2

3
url = url;

在构造函数中将local url设置为local url。如果要将该值保存在对象中,则需要url显式引用对象成员(或使用不同的名称):

this.url = url;
于 2010-09-20T16:36:30.883 回答
0

似乎 url 字符串仍然为空

public var url:String = '';

不是吗?

尝试

public var url:String = 'http://media.project:8080/audio/playlist.xml';
于 2010-09-20T16:34:26.100 回答