【问题标题】:flash.net.URLLoader get body from 500 internal server errorflash.net.URLLoader 从 500 内部服务器错误中获取正文
【发布时间】:2010-09-20 19:14:16
【问题描述】:

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

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

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    状态码 500 触发 flash.events.HTTPStatusEvent.HTTP_STATUS,您可以从中获取状态。然后它会触发 IOErrorEvent.IO_ERROR 从我可以获取 loader.data 的位置。

    但是对于 Chrome 和 Safari,loader.data 是空的。它包含适用于 Firefox 3.6+、IE8 和 IE9 的正确 responseText!

    【讨论】:

      【解决方案2】:

      尝试为 flash.events.HTTPStatusEvent.HTTP_STATUS 向 URLLoader 添加事件侦听器。这肯定会为您提供代码,但至于 body...AIR 公开 flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS 会为您提供标题等,但我认为这对您没有帮助。

      【讨论】:

        【解决方案3】:

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

        我几乎 100% 确定 Flash 中没有这样的东西,这让我相信除了 200 之外,您无法获取任何其他状态代码的主体。所以您被卡住了。 一种解决方案是在您的 Web 服务上设置一个可选参数,当设置该参数时,将导致所有方法返回 200,并且只写出抛出的任何异常。

        【讨论】:

        • 这或许可以解释为什么 HTTPStatusEvent.HTTP_RESPONSE_STATUS 仅适用于 Adob​​e AIR。
        猜你喜欢
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 2019-01-29
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 1970-01-01
        • 2019-01-17
        相关资源
        最近更新 更多