Mac OS Sierra 上的 Adob​​e AIR 应用程序中出现流错误 #2032,需要帮助

Posted

技术标签:

【中文标题】Mac OS Sierra 上的 Adob​​e AIR 应用程序中出现流错误 #2032,需要帮助【英文标题】:Emerging Stream Error #2032 in Adobe AIR application on Mac OS Sierra, help needed 【发布时间】:2017-07-11 16:25:44 【问题描述】:

我正在尝试帮助一个客户使用 Adob​​e AIR 应用程序,该应用程序突然停止在 Mac OS Sierra 上运行。我还没有自己开发这个应用程序,所以我正在尽我所能来解决这个问题。它本质上是一个用 Actionscript 3 编写的 Flex 应用程序。当我调试时,我可以看到我收到以下错误:

[ERROR] 错误 #2032:流错误。

应用程序的工作方式是,它首先向服务器发出 Web 请求并获取包含许多歌曲的 XML。没问题。

之后,应用程序下载 XML 结果中的第一首歌曲并开始播放。

当第一首歌曲开始播放应用程序时,然后下载 XML 列表中的第二首歌曲,当下载完成时,它开始下载下一首歌曲,依此类推。正在下载的文件似乎相当大,几 MB。

所以第一次下载工作正常,但所有其他曲目下载都失败并出现 Stream Error #2032。似乎我没有从失败的请求中得到任何响应头,只有第一个。我在服务器上有一个 crossdomain.xml。

此应用程序在 Mac OS X El Capitan 和 Windows 上运行良好,但在 Sierra 中我收到此错误。代码并不复杂,它使用 URLLoader 发出 API URL 请求并将文件保存到磁盘。我也尝试过使用 URLStream,同样的问题。

这是一些代码示例:

    public function downloadTrack(track:Object, storeName:String, apiKey:String):void 

        this.setCurrentTrack(track);

        this.urlParameters.storeName = storeName;
        this.urlParameters.keystring = apiKey;

        this.urlLoader = new URLLoader();
        this.urlLoader.dataFormat = URLLoaderDataFormat.BINARY;

        this.urlRequest = new URLRequest("/api/" + 'download/' + 
        this.currentTrack.id + "?time=" + new Date().getTime());
        this.urlRequest.method = URLRequestMethod.POST;
        this.urlRequest.data = this.urlParameters;

        this.addEventListeners();

        this.urlLoader.load(this.urlRequest);

    

    private function loaded(e:Event):void 
        this.fileData = e.target.data;
        writeFile();
    

    private function writeFile():void 
        var filePath:String = this.currentTrack.md5 + '.ogg';
        var cacheFile:File = this.downloadDirectory.resolvePath('.' + filePath);

        this.fileStream.addEventListener(Event.CLOSE, saveReady);
        this.fileStream.openAsync(cacheFile, FileMode.WRITE);
        this.fileStream.writeBytes(fileData,0,fileData.length);
        this.fileStream.close();
    

在 addEventListeners() 方法中,添加了 URLLoader 的事件侦听器,触发 IOError 的是 urlloader。

奇怪的事情发生了两次,应用程序突然开始正常工作,并连续下载所有文件。然后几分钟后它又开始起作用了,没有任何效果。我真的很难理解错误在哪里。我不是 Adob​​e AIR/Flex 专家,所以也许你能指出我正确的方向?我已经快要放弃这个了。

谢谢!

【问题讨论】:

在您的addEventListeners() 中,您在收听flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS 吗?这可能会为您提供有关连接发生情况的更多信息。见Error #2032: Stream Error 是的,URLLoader 正在监听 HTTPStatusEvent.HTTP_RESPONSE_STATUS。我得到下载的轨道的状态码 200 和失败的状态码 0。 【参考方案1】: 尝试更改目的地,可能您没有权限 写在那里。 使用最新的 AIR SDK

如果你能分享它复制的项目会更好,这样我就可以在我的机器上检查了

【讨论】:

使用最新的air sdk可能会修复它 谢谢,我尝试将最新的 AIR SDK 与 Flex 一起使用,现在它似乎可以正常工作了。我将测试应用程序一段时间,因为它之前一直从工作到不工作。 使用最新的AIR SDK似乎已经解决了这个问题!我使用的是 Flex SDK 4.6.0 和 Flash Builder 4.7 附带的 Adob​​e Air SDK。 请注意,您可以在 flex.apache.org 上找到更新的版本

以上是关于Mac OS Sierra 上的 Adob​​e AIR 应用程序中出现流错误 #2032,需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

python 在Python 3.5上的Mac OS Sierra上安装OpenCV

为啥mac升级之后,升级成mac OS Sierra 10.12.1,我的parallels Desktop就启动不了,需要重新安装吗?

在我的 Mac OS Sierra 构建主机上管理配置文件

valgrind mac os sierra 10.12.1

Mac OS sierra 更新后 Apache 出现 404 错误

配置错误:在 Mac OS Sierra 上找不到 libevent