Estoy escribiendo una aplicación que se conecte con un servidor mediante NSURLConnection.

En el método delegado didreceiveresponse, si el código de estado 404, puedo cancelar la conexión y me gustaría mostrar un mensaje de error personalizado que se genera en el servidor.

El problema es que a partir objeto de respuesta, sólo me puede conseguir el código de estado, encabezados, mimetype, etc. pero ningún cuerpo.

¿Cómo puedo obtener el cuerpo de mensaje de NSURLResponse?

InformationsquelleAutor telemaco | 2010-06-10

1 Comentario

  1. 27

    ¿Por qué cancelar la conexión? Después de todo, 404 puede tener contenido del cuerpo. Simplemente no la cancele, y dejar que el programa se llame el próximo delegado NSURLConnection método.
    Cuando los datos [el contenido del cuerpo] es enviado - (void)connection:(NSURLConnection *) didReceiveData:(NSData *) se llama, usted necesita para recuperar los datos. Leer la parte correspondiente en la documentación:

    La respuesta de un servidor a una solicitud puede ser visto como dos partes: los metadatos que describen el contenido y la URL de los datos de contenido. Los metadatos que es común a la mayoría de los protocolos está encapsulado por el NSURLResponse clase y consiste en el tipo MIME, que se espera de longitud de contenido, codificación de texto (donde sea aplicable), y la URL que proporciona la respuesta.

    La NSURLConnection y NSURLDownload clases de proporcionar la interfaz para realizar una conexión especificado por un NSURLRequest objeto y descargar el contenido. Un NSURLConnection objeto proporciona datos para el delegado como es recibido desde el origen, mientras que un NSURLDownload objeto escribe los datos de la solicitud directamente en el disco. Ambas clases de proporcionar una amplia delegado de apoyo para responder a las redirecciones, la autenticación de los desafíos, y las condiciones de error.

    Como por ejemplo delegado de implementación:

    -   (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{
        NSLog(@"String sent from server %@",[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]);
    
    }
    • Si usted está haciendo una llamada sincrónica, sin embargo, no están usando métodos de delegado. Usted obtener el resultado de inmediato: [NSURLConnection sendSynchronousRequest:solicitud de returningResponse:&respuesta de error:&err]

Dejar respuesta

Please enter your comment!
Please enter your name here