2010-09-20 75 views
4

我正在尝试简化内部测试的错误报告。当我使用URLLoader/URLRequest加载以500 HTTP状态码作为响应的页面时,我用IOErrorEvent.IO_ERROR来捕获它,但找不到获取响应正文的方法。与Event.Complete不同,loader.data(My URLLoader)是一个空字符串。flash.net.URLLoader从500内部服务器获取正文错误

是的,我可以使用Fiddler/Firebug来获得实际的响应,但是当我没有这些运行时,这会很好地捕捉间歇性/难以重现的错误。

回答

1

尝试向flash.events.HTTPStatusEvent.HTTP_STATUS的URLLoader添加事件侦听器。这肯定会让你的代码,虽然身体...... AIR暴露flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS这将让你头等,但我不认为这会帮助你在这里。

0

自从我在Flash中摆弄这件事之后,我已经有一段时间了。但是我最近在Silverlight中遇到了同样的问题,问题原来是在浏览器中首先处理响应,所以我只能得到浏览器“用户友好”的错误页面。 我Silverlight你可以通过使用ClientHTTP网络堆栈来解决这个问题。这使得webrequest直接通过操作系统而不是通过浏览器网络堆栈。

我几乎100%确定Flash中没有这种东西,这导致我相信你不能得到身体的任何其他状态代码超过200.所以你被惊吓地卡住了。 一个解决方案是在你的web服务上有一个可选参数,当它被设置时,将导致所有方法返回200,并且只写出抛出的任何异常。

+0

这可能解释为什么HTTPStatusEvent.HTTP_RESPONSE_STATUS仅适用于Adobe AIR。 – Aaron 2010-09-21 20:00:18

2

状态码500触发flash.events.HTTPStatusEvent.HTTP_STATUS,您可以从中获取状态。然后从我能得到loader.data的地方触发IOErrorEvent.IO_ERROR。

但对于Chrome浏览器& Safari,loader.data为空。它包含适用于Firefox 3.6 +,IE8,& IE9的正确responseText!