HTTP-аутентификация в iPhone - PullRequest
10 голосов
/ 28 апреля 2011

Я надеюсь, что кто-то может помочь мне с вопросом, касающимся аутентификации в Xcode. В основном у меня есть сервер MS Sharepoint, который возвращает XML. У меня есть этот кусок кода для аутентификации, но он недоступен.

NSString *urlString = @"http://example.com/";

NSMutableURLRequest *request= [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSString *str1 = [NSString stringWithString:@"username:password"];
NSData *myDate = [str1 dataUsingEncoding:NSUTF8StringEncoding];
NSString *str2 = [Base64 encode:myDate];
NSLog(@"%@ str1 %@", str2,str1);

[request addValue:[NSString stringWithFormat:@"Basic %@",str2] forHTTPHeaderField:@"Authorization"];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@", str);

Даже я передаю правильные учетные данные, но сервер не принимает. Возвращает

401 - Несанкционировано: доступ запрещен из-за неверных учетных данных.

Может ли любая1 помочь?

Ответы [ 2 ]

8 голосов
/ 28 апреля 2011

Используйте NSURLConnection 's -connection:didReceiveAuthenticationChallenge: метод делегата, чтобы определить, когда требуется аутентификация.Вкратце, вы будете использовать экземпляры NSURLCredential для присоединения аутентификации к запросу.

Документы имеют хороший обзор и пример кода:

Ответ на запрос аутентификации

7 голосов
/ 28 апреля 2011

Рассмотрите возможность использования класса с открытым исходным кодом ASIHTTPRequest, поскольку он делает аутентифицированные запросы довольно простыми.

...