$erreur http manipulation en AngularJS
$http, dans mon projet AngularJS pas en mesure de reconnaître 40X(401,403,405...), des erreurs sur iOS.
Je suis à l'aide de 1.2.10 AngularJS version et Cordova version 3.4.0.
Ci-dessous c'est le code que j'utilise:
TE_SERVICES.factory('hello',function ($http,$rootScope) {
return {
loginUser: function(userCredentials,successCallback,errorCallback){
$http({
method: "GET",
url: "data/example.json",
headers: {"Authorization":'Basic '+userCredentials},
}).then(function(response){
successCallback(response.data);
console.log("Success------"+JSON.stringify(response))
},function(data, status, headers, config){
errorCallback(data);
console.log("Error------"+JSON.stringify(data)+" "+status)
})
}
}
});
hello.loginUser($rootScope.encodedUserCredencials,function(persons) {
//success handler
}, function(data) {
//error handler
console.log(data.status+"===="+status)
});
data.status
est de retour en 0 et l'état renvoie undefined.
Merci de m'aider à résoudre ce problème.
Essayé d'inclure le domaine en liste blanche sur IOS.Mais pas de solution 🙁 Il donne toujours la même réponse.
Mais le même code fonctionne très bien sur Android.
Merci de m'aider à résoudre ce problème.
Merci d'avance 🙂
J'ai le même problème. Avez-vous trouvé une solution?
OriginalL'auteur Surya | 2014-05-06
Vous devez vous connecter pour publier un commentaire.
De sorte que vous r à l'aide de la
$http
angulaires. Utilisez-vous leerror
de rappel ou de la deuxième fonction dans lethen
de rappel ?Exemple
Ou avec
then
, qui peut prendre 2 fonctions. La première est la onSuccess, le deuxième de la onError fonction.La
response
paramètre ne contiennent également les codes d'erreur.Envisager d'utiliser un
$httpInterceptor
pour gérer toutes les errorcodes au même endroit, au lieu de les manipuler dans tous les http rappel.Mise à JOUR:
Il me semble que l'angle de doc est incomplète/de mal pour la réussite de rappel.
Il ne marche pas passer à 4 paramètres. Il ne passe qu'une
response
objet qui contient toutes les informations au sujet de la demande+réponse et les données passées.Mise à jour de l'édition:
N'écrivez pas des rappels par vous-même. Utilisation angulaire promesses:
Essayer cela et me dire si le
console.log
journaux de quelque chose.Je fonctionne très bien sous android, le problème est dans l'IOS, lorsque je donne des informations d'identification non valides dans android il jette erreur 401, mais dans IOS il montre des données.statut 0.:(
selon docs.angularjs.org/api/ng/service/$http "Le
$http
héritage promesse méthodessuccess
eterror
ont été dépréciés. L'utilisation de la normethen
méthode à la place."OriginalL'auteur Konstantin Krass
J'ai eu exactement le même problème. Cordova application, angular js, IPhone et 401 demandes ne sont pas reçus dans angular js http intercepteur. Ils fonctionnent très bien sur les appareils android.
Ma conclusion a été que l'IPhone navigateur est la gestion de plus de levier et l'utilisation de WWW-Authenticate informations d'authentification. C'est pourquoi la réponse n'a pas angulaire.
La seule solution que j'ai trouvé, était de changer mon service pour retourner à 400 au lieu de 401 dans le cas d'une demande d'api. Dans ce cas, je retourne 400 avec un message d'erreur que j'ai poignée sur le côté client.
J'espère que cette aide.
OriginalL'auteur Radu D