2010-09-20 5 views
4

Je suis en train de rationaliser mon rapport d'erreurs pour des tests internes. Lorsque j'utilise URLLoader/URLRequest pour charger une page qui répond avec le code d'état 500 HTTP, je l'attrape avec IOErrorEvent.IO_ERROR, mais je ne trouve pas le moyen d'obtenir le corps de la réponse. Contrairement à Event.Complete, loader.data (My URLLoader) est une chaîne vide.flash.net.URLLoader obtenir le corps de 500 erreur interne du serveur

Oui, je peux utiliser Fiddler/Firebug pour obtenir la réponse réelle, mais il serait bon d'intercepter les erreurs intermittentes/difficiles à reproduire lorsque je ne les ai pas exécutées.

Répondre

1

Essayez d'ajouter un écouteur d'événement à votre URLLoader pour flash.events.HTTPStatusEvent.HTTP_STATUS. Cela vous donnera certainement le code, bien que pour le corps ... AIR expose flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS qui vous obtiendra des en-têtes et autres, bien que je ne pense pas que cela va vous aider ici.

0

Son un certain temps que je bidouillé avec cela dans Flash. Mais j'ai récemment eu le même problème dans Silverlight, et le problème s'est avéré être le navigateur traiterait la réponse d'abord, de sorte que je pouvais seulement obtenir la page d'erreur du navigateur "conviviale". I Silverlight vous pouvez contourner cela en utilisant la pile réseau ClientHTTP. Ce qui rend le webrequest directement à travers l'OS au lieu de passer par la pile réseau des navigateurs. Je suis presque sûr à 100% qu'il n'y a pas une telle chose dans Flash, ce qui me porte à croire que vous ne pouvez pas obtenir le corps pour tout autre code de statut que 200. Donc, vous êtes probablement bloqué. Une solution consiste à avoir un paramètre facultatif sur votre service Web, qui, lorsqu'il est défini, entraîne le retour de toutes les méthodes à 200 et l'écriture des exceptions levées.

+0

Cela pourrait expliquer pourquoi HTTPStatusEvent.HTTP_RESPONSE_STATUS est uniquement disponible pour Adobe AIR. – Aaron

2

Code d'état 500 feux flash.events.HTTPStatusEvent.HTTP_STATUS à partir de laquelle vous pouvez obtenir le statut. Il déclenche alors IOErrorEvent.IO_ERROR d'où je peux obtenir loader.data.

Mais loader.data est vide pour Chrome & Safari. Il contient le bon responseText pour Firefox 3.6+, IE8, & IE9!

Questions connexes