2010-09-08 3 views
1

Итак, я пытаюсь войти на мой сайт, используя NSMutableURLRequest, который представляет учетные данные через сообщение. Как noobie, у меня есть некоторые вопросы о функциональности этого метода, чтобы убедиться, что я его понимаю.NSMutableURLRequest надлежащая публикация

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]; 

Теперь это автоматически обрабатывает любые переадресации с помощью метода делегата правильно? Он также будет собирать любые файлы cookie на этом пути? Кроме того, следует ли вместо этого использовать асинхронный запрос? Благодаря!

UPDATE: Итак, я понял, что некоторые из файлов cookie игнорируются запросом и последующими переадресациями. Кто-нибудь знает, почему это может произойти?

ответ

0

вы можете сделать что-то подобное при регистрации в синхронном режиме ... код не идеален, но это общая идея.

смотрите здесь документации

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]; 

здесь учебник, который делает это асинхронно

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

+0

интересным, можно ли изменить хранилище куков (безопасность) политика ? Я чувствую, потому что он аутентифицируется в другом домене, последующие переадресации не собирают файлы cookie. – gabaum10

+0

Я реализовал решение, в котором я загружаю все учетные данные для определенных доменов в хранилище учетных данных ... так как URL-адреса запрашивают учетные данные, они могут получить их из магазина –

+0

вправо, ну, у меня нет возможности используйте аутентификацию на основе запроса. Я должен пройти все обручи, чтобы собрать куки. Было бы намного проще, если бы у меня был этот вариант ... – gabaum10

Смежные вопросы