我正在使用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
有什么想法吗?
答案 0 :(得分:3)
仅限AIR,您可以使用httpResponseStatus。否则,在没有AIR的Flash / Flex中你不能。
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)。