2010-02-17 9 views
5

J'utilise URLLoader pour POST à ​​un serveur. La réponse xml du serveur peut répondre avec une erreur 404 ou 403 (interdite). Cependant, je suis incapable d'obtenir les codes de réponse.impossible d'obtenir le code de réponse HTTP/en-têtes dans actionscript 3?

Voici le code

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); 
} 
d'état

est toujours 0 indépendamment du fait que je retourne 200, 400, 404, 301, 500, etc ...

Toutes les idées?

Répondre

3

Pour AIR uniquement, vous pouvez utiliser httpResponseStatus. Sinon dans Flash/Flex sans AIR, vous ne pouvez pas.

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/URLLoader.html#event:httpResponseStatus

httpResponseStatus événement
Type d'objet de l'événement: flash.events.HTTPStatusEvent HTTPStatusEvent.type property = flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS

Version du langage: ActionScript 3.0 Version du : AIR 1.0 AIR 1.0

Distribué si un appel de la méthode load() tente d'accéder aux données via HTTP et qu'Adobe AIR peut détecter et renvoyer l'état code pour la demande. Contrairement à l'événement httpStatus, l'événement httpResponseStatus est envoyé avant toute donnée de réponse. En outre, l'événement httpResponseStatus inclut des valeurs pour les propriétés responseHeaders et responseURL (qui ne sont pas définies pour un événement httpStatus.) Notez que l'événement httpResponseStatus (le cas échéant) sera envoyé avant (et en plus) tout événement complet ou d'erreur

+0

ouais je suis venu à la conclusion qu'ils ne l'ont pas soutenu aussi bien. Merci les gars! – user139078

0

la possibilité de regarder les en-têtes est limitée dans plusieurs navigateurs, donc flash a un problème avec le passage de l'information.Ceci est principalement blâmé sur les paramètres du navigateur, mais je n'ai pas encore trouvé un où il fonctionne réellement

j'ai abandonné et eu le fichier imprimer le code de réponse dans mes projets, pas merveilleux (et quelque peu vaincre le point), mais semble fonctionner

0

En réponse tardive (FWIW):.

D'après ce que j'ai lu, les codes d'état que vous obtenez dépendent du navigateur que le lecteur Flash est en cours d'exécution dans

One article dit que vous ne pouvez obtenir 200 ou 500. One SO question dit qu'ils obtenaient 207 dans Chrome, mais 0 dans Firefox.

Personnellement, j'ai testé avec le lecteur de développement Flash ainsi qu'une version ActiveX et j'ai pu obtenir de nombreux codes d'état HTTP 2XX/4XX (mais je n'ai pas pu obtenir les codes de redirection 3XX parce que les requêtes redirigé et retourné 200s).