68 votes

Les codes d'état HTTP sont-ils définis quelque part dans le SDK iOS ?

Quelqu'un sait-il si/où les codes d'état HTTP, comme indiqué ici sont définis dans le SDK iOS ? Ou dois-je m'attendre à devoir les redéfinir manuellement dans un fichier de constantes ?

1 votes

J'ai fait un grep -r '404' * dans /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/ et je suis revenu les mains vides, donc la réponse est presque certainement "non".

1 votes

@Kalle Vous devriez poster votre commentaire en tant que réponse, il me semble qu'il est définitif.

0 votes

C'est fait. :) (Remplissage de la longueur minimale des commentaires)

33voto

Matthew Gillingham Points 2690

Eh bien, ils sont définis dans le sens où

[NSHTTPURLResponse localizedStringForStatusCode:(NSInteger)statusCode]

peut retourner une chaîne pour le code d'état donné. Est-ce que c'est ce que vous recherchez ?

9 votes

Pas tout à fait - j'utilise les codes d'état HTTP pour contrôler la logique de l'application - par exemple, 402 déclenchera une fenêtre d'alerte indiquant à l'utilisateur qu'il doit effectuer un achat in-app pour continuer. J'ai #défini HTTP_PAYMENT_REQUIRED 402, mais j'ai l'impression que cela devrait déjà être présent quelque part dans l'API, comme c'est le cas avec Android.

28voto

Kalle Points 6804

J'ai fait un

grep -r '404' *

sur

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/ 

et sont revenus les mains vides, donc la réponse est presque certainement "non".

1 votes

Ou peut-être les codes sont définis quelque part comme un enum avec des valeurs relatives, comme kHTTPErrorBadRequestCodes = 400 et kHTTPErrorNotFound = kHTTPErrorBadRequestCodes+4... donc vous ne pouvez pas être sûr...

3 votes

Je peux dire avec certitude que ce serait plutôt absurde, donc j'en doute.

0 votes

Je suis d'accord, j'en doute aussi ;) mais nous continuons à espérer ^^.

6voto

Ondrej Points 1369

Il existe une bibliothèque Obj-C complète avec tous les codes définis à ce jour : https://github.com/rafiki270/HTTP-Status-Codes-for-Objective-C

UPDATE : La nouvelle version de Swift est ici : https://github.com/manGoweb/StatusCodes

2voto

JocelynH Points 76

Le code de statut http peut être défini par la réponse du serveur. Lorsqu'il y a une connexion, vous pouvez utiliser le NSURLResponse pour lire le statusCode. Ces 4** réponses peuvent être définies en interne sur votre serveur.

1 votes

Je pense que JocelynH a raison : selon le site w3.org lien dans l'OP, "Sauf lorsqu'il répond à une requête HEAD, le serveur DEVRAIT inclure une entité contenant une explication de la situation d'erreur..." Je pense qu'Apple a choisi, pour une raison ou une autre, de ne pas utiliser l'énumération pour les erreurs de la gamme 400 parce qu'elles sont censées dépendre du service. (Non pas que je sois nécessairement d'accord avec ce raisonnement).

2voto

Takahiko Kawasaki Points 1313

Je n'ai pas non plus trouvé de fichier d'en-tête dont j'attendais l'existence, j'ai donc dû en écrire un moi-même.

Avec HTTPStatusCodes.h contenu dans le fichier nv-ios-http-status sur GitHub, la répartition basée sur les codes d'état HTTP peut être écrite comme suit.

#import "HTTPStatusCodes.h"

......

- (void)connection:(NSURLConnection *)connection
  didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;

    switch ([res statusCode])
    {
        // 200 OK
        case kHTTPStatusCodeOK:
            ......;
    }

    ......
}

J'espère que HTTPStatusCodes.h vous fera gagner du temps, à vous et aux autres développeurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X