actionscript-3 - HTTP 状态代码 503 在 Flash 中引发错误 #2030

标签 actionscript-3 flash http error-handling urlloader

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

link to bad file

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

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

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

在我的 Flash 文件中,我将监听器绑定(bind)到 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?

最佳答案

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

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

  • 收到 503 错误,增加计数器
  • 收到 Uncaught Error ,检查计数器:
  • 如果错误 ID 为 2030 并且计数器 > 0,则递减计数器
  • 否则,抛出错误
  • 关于actionscript-3 - HTTP 状态代码 503 在 Flash 中引发错误 #2030,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648630/

    相关文章:

    android - 从url获取文件大小

    actionscript-3 - 为什么我的外部资源没有通过 ActionScript 中的 URL/Loaders 加载(在许多情况下)?

    actionscript-3 - ActionScript 3 : How do I access the properties of the document class?

    flash - 在 AS3 中滚动 MovieClip 时的手形光标

    javascript - XSS 和 Flashvars 有什么可能?如何预防?

    javascript - 有没有办法使用 JS 和 AngularJS 获取 HTTP 状态代码名称?

    actionscript-3 - 为什么闪存在创建数组和创建包含数组的类时会消耗不同数量的内存?

    flash - PrintJob 发送到打印机,尽管我从未调用过 send()

    android - 带有 2.2 应用程序的 3.1 设备上带有 Flash 的 WebView

    javascript - 存储来自 get 请求的数据