AIR的URLLoader不支持对静态文件使用POST方法获取
在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<?xml version="1.0" encoding="utf-8"?>
2<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
3 xmlns:s="library://ns.adobe.com/flex/spark"
4 xmlns:mx="library://ns.adobe.com/flex/mx"
5 applicationComplete="windowedapplication1_applicationCompleteHandler(event)">
6<fx:Script>
7 <![CDATA[
8 import mx.events.FlexEvent;
9
10 protected function windowedapplication1_applicationCompleteHandler(event:FlexEvent):void
11 {
12 _loader = new URLLoader();
13 _loader.addEventListener(Event.COMPLETE,handler_comp);
14 _loader.addEventListener(IOErrorEvent.IO_ERROR,handler_err);
15 var __request:URLRequest = new URLRequest('http://demo.zengrong.net/freeroom/index.html');
16 __request.method = URLRequestMethod.POST;
17 _loader.load(__request);
18 }
19
20 private var _loader:URLLoader;
21
22 private function handler_comp(evt:Event):void
23 {
24 trace(_loader.data);
25 }
26
27 private function handler_err(evt:IOErrorEvent):void
28 {
29 trace(evt.toString());
30 }
31
32 ]]>
33</fx:Script>
34</s:WindowedApplication>
- 文章ID:1235
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/air-urlloader-post/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。