AIR 访问网络资源老提示 Unhandled ioError 错误的解决办法

http://www.cnblogs.com/huomiao/archive/2012/06/11/2544851.html

本来想着flash有安全沙箱限制,访问网络上的资源会受到限制,如果没跨域策略文件,就不能访问,而AIR却可以访问。
于是我就用AIR写了一段程序来访问网上的一个 flash文件:

var urlL:URLLoader = new URLLoader();

var urlR:URLRequest = new URLRequest("http://cimg3.163.com/tech/school/sunxin/vc++/12.swf");

urlL.load(urlR);

启动后发现竟然报错

AIR 访问网络资源老提示 Unhandled ioError 错误的解决办法 - cruelchen - 请重启您的计算........

ioError ,很奇怪,因为这个文件通过浏览器是可以直接访问的,但是为什么AIR加载却失败了呢?

 

于是Google、Baidu了一通,没找到什么结果。纠结了很长一段时间。

 

今天突发奇想,既然浏览器可以访问,而AIR不能访问,估计是封包的问题吧,于是我就用Fillder监控了一下请求。

两个数据包分别如下:

 

直接通过浏览器请求路径http://cimg3.163.com/tech/school/sunxin/vc++/12.swf

 

GET http://cimg3.163.com/tech/school/sunxin/vc++/12.swf HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: cimg3.163.com
Cookie: vjuids=2919b0e32.137bb9ab958.0.a5cee98eac1c; vjlast=1338882308.1339379877.11; _ntes_nnid=f4c9485efad5585cd87a1b6cce3363bc,1339379731186; _ntes_nuid=f4c9485efad5585cd87a1b6cce3363bc; P_INFO=miaofengliang2005@163.com|1339379735|0|mail163|11&18|not_found&1339377087&search#bej&null#2#0|&0; USERTRACK=202.108.36.125.1338975329984873; isGd=0; isFs=0; Province=010; City=010
 

通过AIR的URLLoader来请求http://cimg3.163.com/tech/school/sunxin/vc++/12.swf

 

GET http://cimg3.163.com/tech/school/sunxin/vc++/12.swf HTTP/1.1
Referer: app:/Test.swf
Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5
x-flash-version: 10,2,153,1
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (Windows; U; zh-CN) AppleWebKit/531.9 (KHTML, like Gecko) AdobeAIR/2.6
Host: cimg3.163.com
If-Modified-Since: Mon, 08 May 2006 03:29:48 GMT
Connection: Keep-Alive
Cookie: vjuids=2919b0e32.137bb9ab958.0.a5cee98eac1c; vjlast=1338882308.1339379877.11; _ntes_nnid=f4c9485efad5585cd87a1b6cce3363bc,1339379731186; _ntes_nuid=f4c9485efad5585cd87a1b6cce3363bc; P_INFO=miaofengliang2005@163.com|1339379735|0|mail163|11&18|not_found&1339377087&search#bej&null#2#0|&0; USERTRACK=202.108.36.125.1338975329984873; isGd=0; isFs=0; Province=010; City=010
 
发现两者的最大区别在于上面的标红的地方。
如果把Referer: app:/Test.swf去掉的话 用Fillder可以请求成功。而这个是AIR自动加上去的。
还好URLRequest可以修改Header的内容,于是我加上下面的代码
urlR.requestHeaders = [];
发现数据包里面竟然还有“Referer: app:/Test.swf”。 那就只能修改Referer的值了,那么Referer的值怎么取的呢?
 
其实 这个swf文件的原始地址是在这里http://tech.163.com/06/0508/11/2GJKFC8F00091THP.html
他是这个网页里的 一个flash文件,而当我请求这个页面时,数据包里就会携带Referer的信息为:
因此,只要将代码改为:
urlR.requestHeaders = [new URLRequestHeader("Referer"http://tech.163.com/06/0508/11/2GJKFC8F00091THP.html)];
就可以访问了。
 
完整的代码如下:

var urlL:URLLoader = new URLLoader();

var urlR:URLRequest = new URLRequest("http://cimg3.163.com/tech/school/sunxin/vc++/12.swf");

urlR.requestHeaders = [new URLRequestHeader("Referer""http://tech.163.com/06/0508/11/2GJKFC8F00091THP.html")];

urlL.load(urlR);

 

这其实就是欺骗服务器,告诉它我调用http://cimg3.163.com/tech/school/sunxin/vc++/12.swf的引用页是http://tech.163.com/06/0508/11/2GJKFC8F00091THP.html
 
### 回答1: "autocad致命错误unhandled" 通常意味着AutoCAD程序出现了未知错误,导致程序无法继续运行。这可能是由于软件冲突、系统问题或者 AutoCAD 程序文件损坏造成的。建议尝试重新安装软件,更新系统驱动程序,或者检查计算机硬件是否有问题。 ### 回答2: Autocad致命错误unhandled是Autocad软件中的一种常见错误,它通常发生在打开或处理文件时,导致软件无法正常工作并关闭。这个错误通常包含一些关于错误的详细信息,比如错误代码、模块名称和地址等,但这些信息对于普通用户来说可能不太容易理解和解决,因此需要一些基本的解决方法来帮助解决这个问题。 解决Autocad致命错误unhandled的方法有很多,以下是一些常用的方法: 1. 查看错误日志文件:Autocad致命错误unhandled发生时,系统会生成一个详细的错误日志文件,用户可以根据这个文件中的信息来排查错误。用户可以按照以下路径找到错误日志文件:C:\Users\用户名\AppData\Local\Autodesk\AutoCAD 20XX\RXX.X\enu\acminfo.xml,其中,用户名和版本号要根据实际情况修改。 2. 更新Autocad软件:由于Autocad致命错误unhandled常常是由软件版本不兼容或软件缺陷所导致的,更新Autocad软件可以解决这个问题。用户可以通过Autodesk官方网站下载最新版本的Autocad软件,安装后再次尝试打开文件。 3. 优化计算机性能:Autocad软件需要较高的计算机性能才能正常运行,如硬盘空间、显卡驱动程序等。如果计算机性能不足,就会出现unhandled错误。因此,用户可以通过升级计算机硬件、清理系统垃圾和优化注册表等方法来提高计算机性能。 4. 禁用不必要的插件:有些插件可能会对Autocad软件造成干扰,导致出现unhandled错误。因此,用户可以根据实际情况禁用不必要的插件。用户可以在Autocad选项菜单中找到插件管理器,在其中禁用不必要的插件。 以上是几种解决Autocad致命错误unhandled的方法,用户可以结合自己的实际情况选择适合的方法。出现这个错误时不必过于紧张,只需要在问题排查时保持耐心和细心,就能解决这个问题。如果实在无法解决,可以联系Autodesk官方客服或寻求专业人士的帮助。 ### 回答3: AutoCAD是一款广泛应用于制图、设计和建筑等多个领域的软件。然而,在使用AutoCAD过程中,用户常常可能会遇到一些错误提示,其中包括“致命错误:unhandled”这一错误。 在AutoCAD中,“致命错误:unhandled”通常表示程序出现了无法处理的异常,导致程序崩溃或停止工作。这种错误一般会出现在AutoCAD启动或进行绘图操作时,可能会显示错误消息或直接关闭程序。 造成“致命错误:unhandled”错误的原因有很多种,包括但不限于: 1. AutoCAD版本不兼容:如果安装的AutoCAD版本与计算机操作系统或硬件不兼容,则可能会出现该错误。 2. 图形文件损坏:如果打开的图形文件已经损坏或过大,则可能会导致该错误。 3. 系统内存不足:如果计算机内存不足,或者AutoCAD使用过多内存,则会导致该错误。 4. 插件冲突:AutoCAD安装了多个插件或应用,如果其中一个插件与AutoCAD不兼容或存在冲突,则可能会导致该错误。 解决“致命错误:unhandled”错误的方法也有很多种,可以从以下几个角度入手: 1. 升级或降级AutoCAD版本,确保与计算机系统兼容。 2. 修复或恢复损坏的图形文件,或者重新创建新的图形文件。 3. 增加计算机内存,或者优化AutoCAD内存使用,以确保系统内存充足。 4. 卸载或禁用与AutoCAD不兼容或存在冲突的插件或应用程序。 此外,在日常使用AutoCAD过程中,还应注意以下几点,以避免出现“致命错误:unhandled”错误: 1. 避免使用不稳定的AutoCAD插件或应用程序。 2. 定期清理计算机垃圾文件和内存,确保系统运行效率。 3. 内存优化:在AutoCAD进行复杂设计或绘图操作时,可考虑提高系统内存并关闭其他不必要的程序,以提高AutoCAD性能。 4. 购买授权版AutoCAD,并定期更新软件补丁和升级版本。 总之,出现“致命错误:unhandled”错误并不是AutoCAD软件本身的问题,而是由于多种因素导致的异常情况。通过以上方法,可以有效避免和解决该错误,保证AutoCAD的正常使用和设计绘图工作的顺利进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值