我正在使用URLLoader开机自检到服务器。来自服务器的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。

有任何想法吗?

最佳答案

对于AIR Only,您可以使用httpResponseStatus。否则,在没有AIR的Flash/Flex中,您将无法执行。

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

httpResponseStatus事件
事件对象类型:flash.events.HTTPStatusEvent
HTTPStatusEvent.type属性= 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事件(如果有)将在完成或错误事件之前(以及除此之外)发送。

09-25 19:19