我正在使用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);
}

状态总是0,无论我是否返回200、400、404、301、500等...

有任何想法吗?

有帮助吗?

解决方案

对于空气,只有您可以使用httpresponsestatus。否则,在没有空气的情况下,您将无法。

http://livedocs.adobe.com/flash/9.0/actionscriptlangrefv3/flash/net/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事件包括响应台面和ResponseUrl属性的值(对于HTTPSTATUS事件不确定。请注意,HTTPRESPONSESTATUS事件(如果有)将在任何完整或错误事件之前发送(以及此外)。

其他提示

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

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

作为迟到的答案(fwiw):

根据我阅读的内容,您获得的状态代码取决于Flash Player正在运行的浏览器。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top