在AIR中对静态文件使用POST方法获取内容的时候,会出现一个IOError错误:

[IOErrorEvent type=”ioError” bubbles=false cancelable=false
eventPhase=2 text=”Error #2032: Stream Error. URL:
http://demo.zengrong.net/freeroom/index.html“ errorID=2032]

注意,只有对 真正的纯静态文件 才会发生这样的错误,而对于使用URL重写方式虚拟出来的静态文件,则不会报错。(本文地址就是用UrlRewrite重写出来的,不信的可以试试 2013-01-24 本博客已经改为静态化地址了,请另找地方测试)

  • 对于以 file:/// 开头的本地文件,不会报错。
  • 在非AIR环境下,也完全正常,不会报错。

究其原因,可能是由于AIR对HTTP协议的方法实现得更加标准。因为AIR不仅支持POST和GET方法,还支持PUT和DELETE方法。 不了解PUT、DELETE、GET、POST的看这里

看下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
applicationComplete="windowedapplication1_applicationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function windowedapplication1_applicationCompleteHandler(event:FlexEvent):void
{
_loader = new URLLoader();
_loader.addEventListener(Event.COMPLETE,handler_comp);
_loader.addEventListener(IOErrorEvent.IO_ERROR,handler_err);
var __request:URLRequest = new URLRequest('http://demo.zengrong.net/freeroom/index.html');
__request.method = URLRequestMethod.POST;
_loader.load(__request);
}
private var _loader:URLLoader;
private function handler_comp(evt:Event):void
{
trace(_loader.data);
}
private function handler_err(evt:IOErrorEvent):void
{
trace(evt.toString());
}
]]>
</fx:Script>
</s:WindowedApplication>

留言

2011-01-05
次访问