5

我正在使用 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...

有任何想法吗?

4

3 回答 3

3

对于 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 访问数据,并且 Adob​​e AIR 能够检测并返回请求的状态代码,则调度。与 httpStatus 事件不同,httpResponseStatus 事件在任何响应数据之前传递。此外,httpResponseStatus 事件包括 responseHeaders 和 responseURL 属性的值(对于 httpStatus 事件未定义。请注意,httpResponseStatus 事件(如果有)将在任何完成或错误事件之前(以及除此之外)发送。

于 2010-02-17T01:16:19.653 回答
0

在几个浏览器中查看标题的能力受到限制,因此 flash 在传递信息方面存在问题。这主要归咎于浏览器设置,但我还没有找到它实际工作的地方。状态事件输出

我放弃了,让文件在我的项目中打印响应代码,这不是很好(并且有点失败)但似乎有效。

于 2010-02-17T08:00:31.013 回答
0

作为迟到的答案(FWIW):

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

一篇文章说你只能得到 200 或 500。一个 SO 问题说他们在 Chrome 中得到 207,但在 Firefox 中得到 0。

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

于 2015-04-29T13:54:46.027 回答