2014-09-03 110 views
0

我试图在Flash视频播放器中加载广告,然后下载VAST文件中链接的所有1x1 Impression gif。一切正常,直到我打这个文件:HTTP状态码503在Flash中抛出错误#2030

link to bad file

该文件返回状态代码302(临时移动)与Location头指向http://httpstat.us/503 - 返回503错误

的一个非常奇怪的方式发生这种情况时,我在Flash中收到错误#2030:“遇到文件结尾。”

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

在我的Flash文件,我已绑定听众都引发SecurityError和IO错误事件:

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?

+0

我有标准_Error#2032:流Error._该URL – fsbmain 2014-09-03 15:58:48

+0

@fsbmain这是奇怪的...我有一个全球性的联合国抓住错误处理程序,它只记录时间和错误ID,并发布“12:08:29 PM - 检测到错误 - 错误:#2030”。堆栈跟踪只是两行:“flash.net.URLLoader.onComplete”,其次是“flash.net.URLStream.readBytes” – stevendesu 2014-09-03 16:09:45

+0

@fsbmain我只是做了一些测试,发现当我打开本地的SWF文件(文件://C:\ ...)我得到错误#2032。当我在网上打开它时(http:// ...),我得到错误#2030。所以它可能与Flash Sandbox相关。 – stevendesu 2014-09-03 16:28:28

回答

1

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

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

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