1

我在 Flash 客户端中使用 URLRequest 从服务中获取一些信息,服务会检查请求 url 中的参数,如果参数无效,服务器可能会返回 403,其中包含 http 正文中的一些内容,我需要分析内容,内容是一个json字符串:

{"code":3, "msg":"invalid channel"}

不幸的是,有时 URLRequest 无法从 URLStream 中读取内容,stream.bytesAvailable 为 0,似乎 URLStream 读取了 null 数据。URLRequest 中是否有任何错误?或者只是因为我以错误的方式使用它?

这是代码:

    public function test() {
        stream = new URLStream();
        request = new URLRequest(url);
        configureListeners(stream);
        var timer:Timer = new Timer(2000, 10);
        timer.addEventListener(TimerEvent.TIMER, onTimer);
        timer.start();
    }

    private function onTimer(e:TimerEvent):void {
        request.url = url + "&timestamp=" + getTimer();
        trace("try to load: " + request.url);
        stream.load(request);
    }

    private function configureListeners(dispatcher:EventDispatcher):void {
        dispatcher.addEventListener(Event.COMPLETE, completeHandler);
        dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
        dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
    }

    private function completeHandler(event:Event):void {
        trace("completeHandler: " + event);
        parseHeader();
    }

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

    private function ioErrorHandler(event:IOErrorEvent):void {
        trace("ioErrorHandler: " + event.toString());
        trace(stream.bytesAvailable + ", " + event.target.bytesAvailable + ", " + event.target.length);
    }

这是日志: 在此处输入图像描述

4

0 回答 0