Я добавляю базовый HTTP-заголовок авторизации в запрос, но мне нужно кодировать строку authString в Base64. Для информации, я не могу использовать didReceiveAuthenticationChallenge из-за чрезмерного количества ошибок 401.
Приведенный ниже код отлично работает в iOS 4.2, но не работает в iOS 3.2 (и я хочу это поддержать).
NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, password] dataUsingEncoding:NSUTF8StringEncoding] base64Encoding];</p>
<pre><code>authString = [NSString stringWithFormat: @"Basic %@", authString];
NSMutableURLRequest* request =
[[NSMutableURLRequest alloc] initWithURL: url
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval: 30];
[request setValue: authString forHTTPHeaderField: @"Authorization"];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
В первой строке моего кода выше я получаю предупреждение о том, что NSData не будет отвечать на base64Encoding.
Итак, я скачал пользовательский класс NSData + Base64 отсюда:
http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html
Но ...... Я не знаю, как использовать этот класс для преобразования моего NSString (authString). Пожалуйста, помогите?!
Я думаю, что следующая строка кода должна исправить:
NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, password] dataUsingEncoding:NSUTF8StringEncoding] base64EncodedString];
но я получаю следующее сообщение:
* Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [NSConcreteMutableData base64EncodedString]: нераспознанный селектор, отправленный на экземпляр
Я пропустил импорт или что-то?
P.S. Это мой первый вопрос здесь, так что будь осторожен со мной !!