首页 文章

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

提问于
浏览
5

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

    对于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 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事件(如果有)将在任何完整或错误事件之前(以及除此之外)发送 .

  • 3

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

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

  • 0

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

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

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

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

相关问题