无法在动作脚本3中获取HTTP响应代码/标头?

时间:2010-02-17 01:06:57

标签: actionscript-3 http httpresponse

我正在使用URLLoader来POST到服务器。来自服务器的xml响应可以响应404或403(禁止)错误。但是我无法获得响应代码。

这是代码

  var urlString:String = "some url";
  var urlRequest:URLRequest = new URLRequest(urlString);
  var loader:URLLoader = new URLLoader();
  loader.addEventListener( Event.COMPLETE, setXMLData );
  loader.addEventListener( IOErrorEvent.IO_ERROR, ioHandler );
  loader.addEventListener( HTTPStatusEvent.HTTP_STATUS, httpStatusHandler );

//...

public function httpStatusHandler(evt:HTTPStatusEvent):void {
    trace("status is " + evt.status);
}
无论我是否返回200,400,404,301,500等等,

状态始终为0

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

仅限AIR,您可以使用httpResponseStatus。否则,在没有AIR的Flash / Flex中你不能。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/URLLoader.html#event:httpResponseStatus

httpResponseStatus事件
事件对象类型:flash.events.HTTPStatusEvent HTTPStatusEvent.type property = flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS

语言版本:ActionScript 3.0 运行时版本:AIR 1.0 AIR 1.0

如果对load()方法的调用尝试通过HTTP访问数据,并且Adobe AIR能够检测并返回请求的状态代码,则进行调度。 与httpStatus事件不同,httpResponseStatus事件在任何响应数据之前传递。此外,httpResponseStatus事件包含responseHeaders和responseURL属性的值(对于httpStatus事件未定义。请注意,httpResponseStatus事件(如果有)将在任何完整或错误事件之前(以及除此之外)发送。

答案 1 :(得分:0)

在多个浏览器中查看标题的能力有限,因此flash在传递信息方面存在问题。这主要归咎于浏览器设置,但我还没有找到它实际工作的地方。 status event output

我放弃并让文件在我的项目中打印响应代码,并不精彩(并且有些失败)但似乎有效。

答案 2 :(得分:0)

作为一个迟到的答案(FWIW):

根据我的阅读,您获得的状态代码取决于Flash播放器运行的浏览器。

One article表示你只能获得200或500. One SO question表示他们在Chrome中获得207分,在Firefox中获得0分。

我个人已经使用开发Flash播放器和ActiveX版本进行了测试,并且能够获得许多不同的2XX / 4XX HTTP状态代码(但无法获得我尝试过的3XX重定向代码,因为请求被重定向并返回200s)。