NSUrlConnectionDelegate: Obtener códigos de estado http

en iOS, ¿cómo puedo recibir el código de estado http (404,500 200, etc.) para get una respuesta de un server web? Estoy asumiendo que está en NSUrlConnectionDelegate.

Objective-C o Monotouch .NET responde bien.

Sí, puede get el código de estado en el método de delegado -didRecieveResponse:

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; int code = [httpResponse statusCode]; } 
 NSHTTPURLResponse* urlResponse = nil; NSError *error = nil; responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; 

La request aSynchronous también debería tener una forma de get el NSHTTPURLResponse ..

Obtiene el código de estado así:

 int statusCode = [urlResponse statusCode]; int errorCode = error.code; 

En el caso de algunos códigos de error muy usados ​​(como 404), se pondrá en el error pero con un código diferente (401 será -1012).

A continuación, le indicamos cómo hacerlo en MonoTouch para .NET para los usuarios de C #. Esto está en NSUrlConnectionDelegate .

 public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response) { if (response is NSHttpUrlResponse) { var r = response as NSHttpUrlResponse; Console.WriteLine (r.StatusCode); } } 

Al observar esta otra pregunta de stackoverflow , parece que puede manejar códigos de estado http en la - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response método de delegado de - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response :

 - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse*)response { if ([response isKindOfClass: [NSHTTPURLResponse class]]) statusCode = [(NSHTTPURLResponse*) response statusCode]; }