NSHttpCookie : Gérer les redirect http 302

guigui31

Membre confirmé
21 Février 2009
11
0
Bonjour,

A la base j'ai développer un script php me permettant de me loguer sur le site de ma banque et de récupérer mes écritures au format .ofx.
Je me suis lancé par la suite dans la création d'une app en cocoa me permettant de lancer ce script par l'intermédaire d'une interface graphique.

Je voudrais maintenant reécrire le script php en obj-c afin de l'optimiser. Etant donné que c'est un site bancaire, il y a beaucoup de redirect et de GET avec échange de cookie pour la sécurité.

Lorsque j'exécute ma requette http, il semble que beaucoup d'étapes me sont masquées par rapport à mon script en php (je devais faire tous les GET lors des redirect). Ceci m'empeche de récupérer certains cookies intermédaires mais nécessaires pour la suite ...

Voila par exemple, le premier GET:
Bloc de code:
NSHTTPURLResponse * response ;
	NSError * error ;
	NSMutableURLRequest * request ;
	
	request = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.secure.banquepopulaire.fr/amserver/UI/Login?goto=https%3A%2F%2Fwww.ibps.occitane.banquepopulaire.fr%3A443%2Fcyber%2Fibp%2Fate%2Fportal%2Finternet.html"]
											cachePolicy:NSURLRequestReloadIgnoringCacheData 
										timeoutInterval:60] autorelease];
	[request setValue:@"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.1) Gecko/20090624 Firefox/3.5" forHTTPHeaderField:@"user-agent"] ;
	[request setValue:@"http://www.occitane.banquepopulaire.fr/" forHTTPHeaderField:@"referer"] ;
	[request setValue:@"gzip,deflate" forHTTPHeaderField:@"Accept-Encoding"] ;

NSData *dataResponse = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error] ;
	if (error) {
		NSLog (@"Erreur : %@", [error localizedDescription] ) ;
		return ;
	}
	//NSLog(@"La reponse 2 - (POST): \n%@", [response allHeaderFields]) ;
	NSLog(@"La reponse 2 - (POST): \n%@%@", [response allHeaderFields],  [[[NSString alloc] initWithData:dataResponse encoding: NSASCIIStringEncoding] autorelease]) ;
 
N'y a t-il personne qui a déjà été confronté à ce problème lors du développement d'une application communiquant avec un serveur web ?
 
N'y a t-il personne qui a déjà été confronté à ce problème lors du développement d'une application communiquant avec un serveur web ?

authorize les redirections, travaille avec des requetes async pour gerer l'auth challenge et les redirections; voir doc. Je dirais non personne n'a ete confronte au probleme car ce n'en est pas vraiment un, enfin si tu sais ce que tu fais... et comprend ce qu'est une requete utilisant htt protocol, une erreur 302 est somme toute claire: you suck
 
une erreur 302 est somme toute claire: you suck

Non pas forcément, dans mon cas (site bancaire) les redirect sont utilisées afin de sécuriser l'authentification.

Pour utiliser les requêtes asynchrones il faut installer une librairie supplémentaire non ? Comment gérer avec les requetes asynchrones le traitement à effectué en fonction de l'avancement de l'authentification. C'est à dire qu'en mode asynchrone le retour d'une request ira déclencher l'appel à une fonction (toujours la même) donc comment savoir si le retour fait parti de la 1ere request, de la 2e ou de la nième ???

Merci d'avance.