34 votes

Gérer les cookies HTTP sur iPhone

Je souhaite porter une application python utilisant mécanize pour iPhone. Cette application doit se connecter à une page Web et utiliser le cookie du site pour accéder à d'autres pages de ce site afin d'obtenir des données.

J'utilisais mécanize avec mon application python pour la gestion automatique des cookies. Existe-t-il quelque chose de similaire pour Objective C qui soit portable sur l'iPhone?

Merci pour toute aide.

72voto

Steve Madsen Points 7265

NSURLConnection vous donne la gestion des cookies pour gratuit. À partir de l' URL de Chargement Guide de Programmation Système:

L'URL de chargement système envoie automatiquement tous les cookies stockés approprié pour un NSURLRequest. à moins que la demande indique de ne pas envoyer des "cookies". De même, les cookies retourné dans un NSURLResponse sont acceptées conformément à la politique d'acceptation des cookies actuels.

44voto

zonble Points 2925

Vous pouvez utiliser la classe NSURLConnection pour effectuer une requête HTTP afin de vous connecter au site Web et de récupérer le cookie. Pour effectuer une demande, créez simplement une instance de NSURLConnection et affectez-lui un objet délégué.

 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
 

Ensuite, implémentez une méthode déléguée.

 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
    NSDictionary *fields = [HTTPResponse allHeaderFields];
    NSString *cookie = [fields valueForKey:@"Set-Cookie"]; // It is your cookie
}
 

Conservez ou copiez la chaîne de cookie. Lorsque vous souhaitez effectuer une autre demande, ajoutez-la à votre en-tête HTTP de votre instance NSURLRequest.

 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
[request addValue:cookie forHTTPHeaderField:@"Cookie"];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X