iphone ios xamarin.ios http-response-codes nsurlconnectiondelegate

iphone - NSUrlConnectionDelegate-Obtener códigos de estado http



ios xamarin.ios (4)

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

Objective-C o Monotouch .NET answer ok.


Al mirar esta otra pregunta de , parece que puede manejar los 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]; }


Aquí le mostramos cómo hacerlo en MonoTouch para .NET para esos 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); } }


Sí, puedes obtener 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 solicitud asincrónica también debe tener una forma de obtener la respuesta NSHTTPURLResponse ..

Obtienes el código de estado así:

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

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