2010-01-15 6 views
0

J'ai ajouté une fonctionnalité dans mon application qui envoie une requête POST à ​​mon serveur Web. Je l'ai testé et ça fonctionne bien. Mais à un moment où j'ai essayé de lancer à nouveau l'application, elle se bloque. J'ai découvert l'erreur 503 qui indique que le serveur est indisponible. Ma question était que devrais-je faire pour empêcher mon application de plantage quand j'ai reçu cette erreur.Le serveur renvoie une erreur 503

Merci

Répondre

0

Le standard HTTP est très clair sur ce point: Tous les codes d'erreur commençant par un 4 sont des erreurs côté client, tous les codes d'erreur commençant par un 5 sont des erreurs côté serveur. Donc quand vous obtenez 503, c'est une erreur que le serveur HTTP renvoie à votre client pour vous dire qu'il y a quelque chose de mal sur/avec le serveur, pas avec votre client ou la demande que vous envoyez. Je me demande donc s'il y a vraiment quelque chose dans votre client que vous pouvez faire pour éviter cette erreur. Si le serveur respecte correctement la norme HTTP, une erreur 5xx signifie que vous devez consulter les journaux côté serveur et trouver ce qui ne va pas avec le serveur, puis résoudre ce problème (sur le serveur). S'il y avait quelque chose de mal avec la demande que vous envoyez, le serveur devrait retourner un code d'erreur 4xx.

+0

Le client ne peut rien faire pour empêcher l'erreur de se produire, mais il peut récupérer normalement au lieu de se bloquer lorsque le 503 est reçu. Voir ma réponse. – Jasarien

0

Si vous utilisez l'API NSURLConnection pour exécuter votre requête (ce que vous devez faire), votre délégué doit recevoir l'appel - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response.

Dans cette méthode, vous pouvez interroger NSURLResponse pour son code d'état et agir en conséquence en fonction de sa nature.

Exemple:

Statut 200 = OK, allez une tête avec ce que vous devez faire Statut 503 = Serveur non disponible - se termine correctement, annuler la demande et nettoyer après vous. Vous pouvez ensuite réessayer.

Questions connexes