首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么URLStream.connected总是真实的?

为什么URLStream.connected总是真实的?
EN

Stack Overflow用户
提问于 2011-04-06 18:24:17
回答 1查看 565关注 0票数 0

我用这个简单的Flash / CS5 3程序加载了一个XML文件:

代码语言:javascript
复制
import flash.net.*;

var URL_REQUEST:URLRequest = new URLRequest('http://preferans.de/top-xml.php');
var URL_STREAM:URLStream = new URLStream();
var URL_VARS:URLVariables = new URLVariables();
var UPDATE_TIMER:Timer = new Timer(1000);

stop();

UPDATE_TIMER.addEventListener(TimerEvent.TIMER, handleTimer);
UPDATE_TIMER.start();

URL_REQUEST.method = URLRequestMethod.GET;
URL_REQUEST.data = URL_VARS;

URL_STREAM.addEventListener(IOErrorEvent.IO_ERROR, handleUserError);
URL_STREAM.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleUserError);
URL_STREAM.addEventListener(Event.OPEN, handleUserOpen);
URL_STREAM.addEventListener(ProgressEvent.PROGRESS, handleUserData);
URL_STREAM.addEventListener(HTTPStatusEvent.HTTP_STATUS, handleUserStatus);
URL_STREAM.addEventListener(Event.COMPLETE, handleUserComplete);
URL_STREAM.load(URL_REQUEST);

function handleUserOpen(event:Event):void {
    trace('handleUserOpen: ' + event);
}

function handleUserData(event:Event):void {
    trace('handleUserData: ' + event);
}

function handleUserStatus(event:HTTPStatusEvent):void {
    trace('handleUserStatus: ' + event.status);
}

function handleUserError(event:Event):void {
    trace('handleUserError: ' + event);
} 

function handleUserComplete(event:Event):void {
    trace('handleUserComplete: ' + event);

    try {
        var str:String = URL_STREAM.readUTFBytes(URL_STREAM.bytesAvailable);
        var xml:XML = new XML(str);
        trace(xml);
    } catch(e:Error){
        trace('Invalid data: ' + e);
        return;
    }
}

function handleTimer(event:TimerEvent):void {
    var now:int = getTimer();

    trace(UPDATE_TIMER.currentCount + ' ' + now + ' ' + URL_STREAM.connected);
}

它工作得很好,我可以看到XML内容:

代码语言:javascript
复制
handleUserOpen: [Event type="open" bubbles=false cancelable=false eventPhase=2]
handleUserData: [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=2390 bytesTotal=2390]
handleUserStatus: 200
handleUserComplete: [Event type="complete" bubbles=false cancelable=false eventPhase=2]
<pref>
   [ .... XML content .....]
</pref>
1 1054 true
2 2054 true
3 3054 true
4 4054 true
5 5054 true
.....
90 90054 true
91 91054 true

但我不明白,为什么URLStream.connected总是

我甚至在我的web服务器上重新启动Apache,但是它不会改变任何事情。

我之所以问这个问题,是因为我计划在我的程序中实现类似Comet(也称为HTTP-push)的调用,并且需要知道,URLStream是否仍在工作/繁忙,或者它是否已完成/中断,是否可以用于新的load()调用(我不想为此引入一个解决方案状态变量)。

谢谢!亚历克斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-06 19:36:25

我认为使用URLStream,只要它访问它的连接仍然是建立的文件,即使它还没有开始下载任何东西或者已经完成了下载。因此,我认为在读取完这些值之后,必须在.close()函数中手动地使用.COMPLETE ()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5571175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档