2011-08-31 10 views
11

Una pregunta rápida. Tengo el siguiente código que obtiene la fecha mod de un archivo en un servidor:iOS - Obtener resultados de encabezado

- (void) sendRequestForLastModifiedHeaders 
{ 
    /* send a request for file modification date */ 
    NSURLRequest *modReq = [NSURLRequest requestWithURL:[NSURL URLWithString:URLInput.text] 
             cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0f]; 
    [[NSURLConnection alloc] initWithRequest:modReq delegate:self]; 
} 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    /* convert response into an NSHTTPURLResponse, 
    call the allHeaderFields property, then get the 
    Last-Modified key. 
    */ 

    NSHTTPURLResponse *foo = [(NSHTTPURLResponse *)response allHeaderFields]; 

    NSString * last_modified = [NSString stringWithFormat:@"%@", 
          [[(NSHTTPURLResponse *)response allHeaderFields] objectForKey:@"Last-Modified"]]; 

    NSLog(@"Last-Modified: %@", last_modified); 

} 

Mi pregunta principal es la siguiente:

¿Este llamada sólo enviar a través de la cabecera? Si el archivo es grande, no quiero que se descargue todo el archivo. Es por eso que estoy revisando el encabezado.

++++++++++++++++++++++++++++++ Después de la actualización esto funciona. Gracias .. ahora queda como:

NSMutableURLRequest *modReq = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:    URLInput.text] 
             cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0f]; 
[modReq setHTTPMethod:@"HEAD"]; 
+0

¿Está buscando encabezados modificados para saber si necesita descargar una nueva copia de un archivo? Si es así, recomendaría usar una biblioteca de solicitud HTTP prefabricada con todo esto integrado, como ['ASIHTTPRequest'] (http://allseeing-i.com/ASIHTTPRequest). Las diversas políticas de caché que puede establecer allí deberían ser adecuadas para su situación. – darvids0n

+0

Por más de lo que siempre quiso saber sobre cómo funciona HTTP, eche un vistazo a través de [RFC 2616] (http://tools.ietf.org/html/rfc2616). La Sección 9 define los diversos métodos GET, HEAD, POST, etc. Los métodos distintos de esos tres se utilizan con poca frecuencia. –

+0

@iOSGuy ¿Estás en twitter? – MarkP

Respuesta

27

como lo tienes ahora, es probable que la descarga de todo el archivo. La clave es el método http utilizado para la solicitud http. Por defecto, es una solicitud GET. Lo que quieres es una solicitud HEAD. No quiere el archivo, solo quiere que el servidor devuelva la respuesta que obtendría si lo hiciera, ¿verdad?

Para hacer eso, desea usar un NSMutableURLRequest y setHTTPMethod: para construir una solicitud con un método de HEAD, en lugar de GET.

+0

Gracias ... Hizo la vida mucho más fácil ... – iOSGuy

+0

@iOSGuy: Por favor, acepte esta respuesta haciendo clic en la marca de verificación al lado. – darvids0n

Cuestiones relacionadas