2010-09-20 65 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!