NSMutableURLRequest et code 304

bonjour ,

J'ai un petit souci je voudrais verifier si un fichier sur un serveur a été modifier .

j'ai donc utilisé NSMutableURLRequest pour creer ma requette a laquelle j'ai ajouter pour l'entete if-modified-since une date de base , qui est le meme que la date du fichier qui est sur le serveur .

le probleme est que je ne recoit pas le code 304 "not modified" mais toujours un code 200 "OK"

quelqu'un aurait il une idée ?



Merci d'avance



Voici le code que j'effectue





-(id)initWithUrlFichierZip:(NSString *)url withDelegate image/sad.png' class='bbc_emoticon' alt=':(' />LoginViewController*)delegate

{

if(self = color=#bb23a0]super[/color] [color=#401a7f]init[/color){

date = [color=#733aa7]NSDate[/color] [color=#401a7f]alloc[/colorinit];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:/color][color=#733aa7]NSURL[/color][color=#000000] [/color]URLWithString[color=#000000]:url][/color]cachePolicy[color=#000000]:[/color]NSURLRequestUseProtocolCachePolicy[color=#000000] [/color]timeoutInterval[color=#000000]:[/color][color=#3523d5]30[/color][color=#000000;


//[request setHTTPMethod:@HEAD];


NSDateFormatter *formatter = [/color]NSDateFormatter[color=#000000] [/color][color=#401a7f]alloc[/color][color=#000000 init];


NSLocale *usLocale = [[/color][color=#733aa7]NSLocale[/color][color=#000000] [/color]alloc[color=#000000 initWithLocaleIdentifier:@en_US] autorelease];


[formatter setLocale: usLocale];

[formatter setTimeZone: color=#733aa7]NSTimeZone[/color] [color=#401a7f]timeZoneWithName[/color]: [color=#d0271c]@"GMT"[/color];

[formatter setDateFormat: @EEE, d MMM yyyy HH:mm:ss];


date = [formatter dateFromString:@Wed, 31 Oct 2012 15:42:05];


NSString *dateString = formatter [color=#401a7f]stringFromDate[/color]:[color=#508187]date[/color stringByAppendingString:@ GMT];

[formatter release];

[request addValue:dateString forHTTPHeaderField:@If-Modified-Since];

NSLog(@%@",[request allHTTPHeaderFields]);


connection = [NSURLConnection connectionWithRequest:request delegate:delegate];

/color]connection[color=#000000] [/color][color=#401a7f]start[/color][color=#000000;




}

return self;


}
Mots clés:

Réponses

  • AliGatorAliGator Membre, Modérateur
    Tu as vérifié que (1) la date que tu utilises est au bon format d'après la RFC (j'ai pas vérifié de mon côté la RFC) et surtout (2) que ton serveur supporte le cache et le header "If-Modified-Since" (rien n'est moins sûr) ?
  • Oui j'ai verifier tous cela ce qui est bizare la c'est que j'ai réussi a avoir le code 304 en ajoutant

    [request addValue:dateString forHTTPHeaderField:@Last-Modified];

    et lorsque que j'ai ajouter cet valeur la date de réponse du serveur pour last-modofied a changer elle s'est avancé de 7 seconde c'est tres bizare
  • AliGatorAliGator Membre, Modérateur
    Donc ça sent un problème de config du cache côté serveur.
  • Ah ok merci pour tes indications la ca a l'aire de fonctionner .

    Une autre question en passant tu sais s'il est possible de recupererer la date a laquelle on a stoquer un fichier qui est dans le filemanager ?
  • AliGatorAliGator Membre, Modérateur
    novembre 2012 modifié #6
    Suffit de lire la doc.



    Tu parles de NSFileManager donc tu devrais déjà  avoir trouvé tout ce qu'il te faut dans la doc de cette classe ici. Tout y es détaillé, y compris pour récupérer la date de modification d'un fichier.



    Par ailleurs, il serait bon d'aller te présenter dans la section "Présentation des membres" qu'on ait un peu connaissance de qui tu es, ton parcours, ton niveau en POO et ObjC, ton expérience...
  • Effectivement j'ai survolé la doc trop rapidement c'est de ma faute , ui j'irai faire un tour pour ajouter des informations , j'ai pas encore eu le temps vu que je vien de m'inscrire
Connectez-vous ou Inscrivez-vous pour répondre.