2010-03-23 11 views
3

Je veux utiliser le code suivant pour vous connecter à un site Web qui renvoie ses informations de cookies de la manière suivante:Comment obtenir des en-têtes Set-Cookie corrects pour NSHTTPURLResponse?

Set-Cookie: 19231234 
Set-Cookie: u2am1342340 
Set-Cookie: owwjera 

J'utilise le code suivant pour vous connecter au site, mais la déclaration d'impression à la fin ne sort rien à propos de "set-cookie". Sur Snow Leopard, la bibliothèque semble automatiquement récupérer le cookie pour ce site et les connexions ultérieures envoyées sont définies avec des en-têtes de "cookie" corrects. Mais sur leopard, cela ne fonctionne pas de cette façon, donc est-ce un déclencheur pour ce comportement "se souvenir du cookie pour certains URLs"?

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:uurl]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"keep-live" forHTTPHeaderField:@"Connection"]; 
[request setValue:@"300" forHTTPHeaderField:@"Keep-Alive"]; 
[request setHTTPShouldHandleCookies:YES]; 

[request setHTTPBody:postData]; 
[request setTimeoutInterval:10.0]; 

NSData *urlData; 
NSHTTPURLResponse *response; 
NSError *error; 
urlData = [NSURLConnection sendSynchronousRequest:request 
           returningResponse:&response 
              error:&error]; 

NSLog(@"response dictionary %@",[response allHeaderFields]); 
+0

Weiguan louzhu. – ZelluX

Répondre

6
[request setHTTPShouldHandleCookies:YES]; 

Cette ligne provoque le système pour gérer les cookies pour vous.

+1

Comme je n'ai pas d'environnement léopard, un utilisateur léopard de mon application me dit que cela ne fonctionne pas même si j'ai inclus cette [requête setHTTPShouldHandleCookies: YES] ;. – overboming

+0

Cette partie, je ne peux pas facilement expliquer. Avec HTTPShouldHandleCookies réglé sur YES sur au moins 10.5 et 10.6 et je pense que jusqu'à 10.2 ou plus, les cookies placés et envoyés doivent être à/du même magasin de cookies utilisé par Safari. – Isaac

+3

J'ai mis [request setHTTPShouldHandleCookies: YES] en haut des instructions set et cela fonctionne, et je me demande pourquoi. :) Merci quand même! – overboming