Mac OS Sierra 上的 Adobe AIR 应用程序中出现流错误 #2032,需要帮助
Posted
技术标签:
【中文标题】Mac OS Sierra 上的 Adobe AIR 应用程序中出现流错误 #2032,需要帮助【英文标题】:Emerging Stream Error #2032 in Adobe AIR application on Mac OS Sierra, help needed 【发布时间】:2017-07-11 16:25:44 【问题描述】:我正在尝试帮助一个客户使用 Adobe 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。
奇怪的事情发生了两次,应用程序突然开始正常工作,并连续下载所有文件。然后几分钟后它又开始起作用了,没有任何效果。我真的很难理解错误在哪里。我不是 Adobe 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 附带的 Adobe Air SDK。 请注意,您可以在 flex.apache.org 上找到更新的版本以上是关于Mac OS Sierra 上的 Adobe AIR 应用程序中出现流错误 #2032,需要帮助的主要内容,如果未能解决你的问题,请参考以下文章
python 在Python 3.5上的Mac OS Sierra上安装OpenCV
为啥mac升级之后,升级成mac OS Sierra 10.12.1,我的parallels Desktop就启动不了,需要重新安装吗?
valgrind mac os sierra 10.12.1