2011-04-22 16 views
58

¿Alguien sabe si/donde los códigos de estado HTTP, as specified here, están definidos en el SDK de iOS? ¿O debería esperar redefinirlos manualmente en un archivo de constantes?¿Están definidos los códigos de estado HTTP en cualquier parte del SDK de iOS?

+1

hice un -r grep '404' * en/desa oper/Plataformas/iPhoneOS.plataforma/Desarrollador/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/y salió con las manos vacías por lo que la respuesta es casi seguro que es "no". – Kalle

+1

@Kalle Debes publicar tu comentario como respuesta, parece ser definitivo para mí. – benzado

+0

Hecho. :) (Relleno de longitud de comentario mínimo) – Kalle

Respuesta

23

hice un

grep -r '404' * 

en

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Lib‌​rary/Frameworks/ 

y vino con las manos vacías por lo que la respuesta es casi seguro que "no".

+1

O tal vez los códigos se definen en algún lugar como una enumeración con valores relativos, como kHTTPErrorBadRequestCodes = 400 y kHTTPErrorNotFound = kHTTPErrorBadRequestCodes + 4 ... por lo que no puede estar seguro ... – AliSoftware

+3

Puedo decir con confianza que eso sería bastante absurdo así que lo dudo – Kalle

+0

Estoy de acuerdo, lo dudo también;) pero llamamos todavía sigue esperando ^^ – AliSoftware

24

Bueno, que se definen en el sentido de que

[NSHTTPURLResponse localizedStringForStatusCode:(NSInteger)statusCode] 

puede devolver una cadena para el código de estado dado. ¿Es esto lo que estás buscando?

+5

No del todo - Utilizo códigos de estado HTTP para controlar la lógica de la aplicación - por ejemplo, 402 activará un AlertView decirle al usuario que debe hacer una compra en la aplicación para continuar. He #definido HTTP_PAYMENT_REQUIRED 402, pero creo que ya debería estar presente en algún lugar de la API, como lo es con Android. – esilver

1

El código de estado http se puede definir mediante la respuesta del servidor. Cuando hay una conexión, puede usar NSURLRespuesta para leer el código de estado. Esas respuestas 4 ** se pueden definir internamente en su servidor.

+0

Creo que JocelynH lo tiene bien: por el w3.org [link] (http://www.w3.org/Protocols/rfc2616/ rfc2616-sec10.html) en el OP, "Excepto cuando se responde a una solicitud HEAD, el servidor DEBERÍA incluir una entidad que contenga una explicación de la situación de error ..." Supongo que Apple eligió, por cualquier motivo, optar por no participar del juego enum para el rango 400 de errores porque se supone que dependen del servicio. (No estoy necesariamente de acuerdo con este razonamiento). – clozach

2

Tampoco pude encontrar un archivo de encabezado que esperaba existir, así que tuve que escribir uno propio.

Con HTTPStatusCodes.h contenido en el proyecto nv-ios-http-status en GitHub, el despacho basado en códigos de estado HTTP se puede escribir como el siguiente.

#import "HTTPStatusCodes.h" 

...... 

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

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

    ...... 
} 

espero HTTPStatusCodes.h puede ahorrar tiempo de ti y de otros desarrolladores.

Cuestiones relacionadas