2010-09-08 6 views
1

J'essaie donc de me connecter à mon site en utilisant un NSMutableURLRequest qui présente les informations d'identification via un message. Comme un noobie, j'ai quelques questions sur la fonctionnalité de cette méthode pour s'assurer que je le comprends.NSMutableURLRequest publication correcte

NSString *post = [NSString stringWithFormat:@"username=%@&password=%@&TARGET=%@",LoginId,LoginPwd,target]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]]; 

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setHTTPShouldHandleCookies:YES]; 
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://somelogin.mycomp.verify.fcc"]]]; 
//[request setURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"]; 
[request setHTTPBody:postData]; 

NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 

Maintenant, cela va gérer automatiquement toutes les redirections via la méthode déléguée correcte? Il collectera également des cookies en cours de route? Aussi, devrais-je utiliser une requête asynchrone à la place? Merci!

MISE À JOUR: J'ai donc déduit que certains cookies sont ignorés par la requête et les redirections ultérieures. Est-ce que quelqu'un sait pourquoi cela peut se produire?

Répondre

0

vous pouvez faire quelque chose comme ceci lors de la connexion synchrone ... le code n'est pas parfait, mais c'est l'idée générale.

regarder ici pour la documentation

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/AuthenticationChallenges.html#//apple_ref/doc/uid/TP40009507-SW1

// credentials set here 
NSURLCredential *creds = [NSURLCredential credentialWithUser:LoginId password:LoginPwd 
              persistence:NSURLCredentialPersistenceForSession]; 

NSURLProtectionSpace *protectionedSpace = [[NSURLProtectionSpace alloc] 
    initWithHost:@"mycomp.verify.fcc" 
    port:8443 
    protocol:@"https" 
    realm:nil 
    authenticationMethod:nil]; 


[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:creds 
              forProtectionSpace:protectionedSpace]; 

// removed credentials from line... 
NSString *post = [NSString stringWithFormat:@"TARGET=%@",target]; 

Voici un tutoriel qu'il fait de manière asynchrone

http://iosdevelopertips.com/networking/handling-url-authentication-challenges-accessing-password-protected-servers.html

+0

Intresting, est-il possible de changer le stockage des cookies (la sécurité) ? Je me sens comme parce qu'il s'authentifie sur un domaine différent, les redirections suivantes ne collectent pas les cookies. – gabaum10

+0

J'ai implémenté une solution où je charge toutes les informations d'identification pour les domaines spécifiques dans le stockage des informations d'identification ... de sorte que les URL demandent des informations d'identification, ils peuvent les récupérer du magasin –

+0

droite, bien je n'ai pas l'option de utiliser une authentification basée sur le challenge. Je dois passer par tous les cerceaux pour collecter les cookies. Ce serait tellement plus facile si j'avais cette option ... – gabaum10