【问题标题】:HTTP status code 503 throwing error #2030 in FlashHTTP 状态代码 503 在 Flash 中引发错误 #2030
【发布时间】:2014-09-03 15:49:23
【问题描述】:

我正在尝试在 Flash 视频播放器中加载广告,然后下载 VAST 文件中链接的所有 1x1 展示 gif。一切正常,直到我点击这个文件:

link to bad file

此文件返回状态码 302(临时移动),带有指向 http://httpstat.us/503 的 Location 标头——返回 503 错误的一种非常奇怪的方式

发生这种情况时,我在 Flash 中收到错误 #2030:“遇到文件结尾。”

查看http://httpstat.us/503,Content-Length 为 23,与返回文本的长度完全匹配(“503 服务不可用”),所以我不认为这是服务器响应的问题。

在我的 Flash 文件中,我将监听器绑定到 SecurityError 和 IOError 事件:

    loader.addEventListener(Event.OPEN, onOpen);
    loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus);
    loader.addEventListener(ProgressEvent.PROGRESS, onProgress);
    loader.addEventListener(Event.COMPLETE, onComplete);

    loader.addEventListener(IOErrorEvent.IO_ERROR, onError);
    loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);

    loader.load(request);

所以我的问题是:我做错了什么?我应该如何检测和处理 Flash 中的状态码 503?

【问题讨论】:

  • 我有标准的 Error #2032: Stream Error. 对于那个 url
  • @fsbmain 太奇怪了...我有一个全局未捕获的错误处理程序,它只记录时间和错误 ID,并发布“下午 12:08:29 -- 检测到崩溃 -- 错误: #2030”。堆栈跟踪只有两行:“flash.net.URLLoader.onComplete”后跟“flash.net.URLStream.readBytes”
  • @fsbmain 我刚刚做了一些测试,发现当我在本地打开 SWF (file://C:\...) 时出现错误 #2032。当我在线打开它(http://...)时,我收到错误 #2030。所以它可能与 Flash Sandbox 相关。

标签: actionscript-3 flash http error-handling urlloader


【解决方案1】:

在对此进行试验后,我发现这是 Flash Player 中的一个错误——当您收到 302 时,Flash Player 会秘密启动一个新的 URLLoader 来处理第二个请求,但会映射所有事件和函数调用。因为它是一个单独的对象,所以抛出的任何错误都不会被捕获。

我的解决方案是为 503 错误添加一个全局静态计数器,然后添加一个未捕获的错误处理程序。

  1. 收到 503 错误,增加计数器
  2. 收到未捕获的错误,检查计数器:
    • 如果错误 ID 为 2030 且计数器 > 0,则递减计数器
    • 否则,抛出错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2017-02-11
    • 2013-11-20
    相关资源
    最近更新 更多