2011-08-31 11 views
11

Una domanda veloce. Ho il seguente codice che ottiene la data mod di un file su un server:iOS - Ottieni risultati intestazione

- (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); 

} 

mia domanda principale è la seguente:

Questo invito inviare soltanto sopra l'intestazione? Se il file è grande, non voglio che l'intero file venga scaricato. Ecco perché sto controllando l'intestazione.

+++++++++++++++++++++++++++++++++++++++ Dopo l'aggiornamento funziona. .. Grazie ora assomiglia:

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

Stai controllando le intestazioni dell'ultima modifica solo per scoprire se è necessario scaricare una nuova copia di un file? Se è così, ti consiglio di utilizzare una libreria di richieste HTTP premade con tutto questo integrato, come ['ASIHTTPRequest'] (http://allseeing-i.com/ASIHTTPRequest). Le varie politiche della cache che è possibile impostare dovrebbero essere adatte alla situazione. – darvids0n

+0

Per più di quanto tu abbia mai voluto sapere su come funziona HTTP, dai un'occhiata a [RFC 2616] (http://tools.ietf.org/html/rfc2616). La Sezione 9 definisce i vari metodi GET, HEAD, POST, ecc. I metodi diversi da questi tre sono usati raramente. –

+0

@iOSGuy sei su twitter? – MarkP

risposta

27

come lo avete ora, probabilmente stai scaricando l'intero file. La chiave è il metodo http utilizzato per la richiesta http. Per impostazione predefinita, è una richiesta GET. Quello che vuoi è una richiesta HEAD. Non vuoi il file, vuoi solo che il server restituisca la risposta che avresti se lo facessi, giusto?

Per fare ciò, si desidera utilizzare uno NSMutableURLRequest e setHTTPMethod: per creare una richiesta con un metodo HEAD, anziché GET.

+0

Grazie ... Ha semplificato la vita ... – iOSGuy

+0

@iOSGuy: Si prega di accettare questa risposta facendo clic sul segno di spunta accanto ad essa. – darvids0n

Problemi correlati