Comment puis-je éviter une boîte de dialogue d'authentification dans Flex lorsque j'utilise HTTPService ou URLRequest?
-
03-07-2019 - |
Question
Ceci est lié à cette question . J'écris une application Flex (une WindowedApplication) qui utilise REST. Tout va bien lorsque je poste avec une authentification valide, mais si je passe un nom d'utilisateur ou un mot de passe invalide à l'API REST (une API REST Twitter, pour être spécifique), une boîte de dialogue d'authentification apparaît.
Ce n'est pas une expérience utilisateur souhaitable, et cela se produit lorsque j'utilise HTTPService et URLRequest. Il ne semble pas y avoir d’événement susceptible d’annuler le dialogue.
Voici à quoi ressemble mon code:
var request:URLRequest = new URLRequest('http://twitter.com/statuses/update.json');
request.method = URLRequestMethod.POST;
var encoder : Base64Encoder = new Base64Encoder();
encoder.encode(this.user + ':' + this.password);
request.requestHeaders.push(new URLRequestHeader("Authorization", "Basic " + encoder.toString()));
var params:Object = new Object();
params.status = msg;
request.data = params;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, HandleRequestComplete);
loader.load(request);
Est-ce que je manque quelque chose? Y a-t-il une meilleure façon d’aborder cela?
La solution
Extrait du document API Twitter ici :
suppress_response_codes: Si ceci paramètre est présent, toutes les réponses sera retourné avec un statut 200 OK code - même les erreurs. Ce paramètre existe pour accueillir Flash et Applications JavaScript s'exécutant dans les navigateurs qui interceptent tous les non-200 les réponses. Si utilisé, c'est alors le travail du client pour déterminer l'erreur états en analysant le corps de la réponse. Utilisez avec prudence, comme ces erreurs les messages peuvent changer.
Autres conseils
En effet, votre demande d'URL gère l'authentification. Pour éviter cela, procédez comme suit:
request.authenticate = false;
Cordialement!
Alain.
Je ne sais pas si cela fonctionne dans une application Flex normale, mais dans les applications AIR, vous pouvez définir une liste des codes de réponse autorisés pour qu'ils soient considérés comme valides.