Кодировка iPhone 3.2 Base64 - PullRequest
       13

Кодировка iPhone 3.2 Base64

2 голосов
/ 11 января 2011

Я добавляю базовый 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. Это мой первый вопрос здесь, так что будь осторожен со мной !!

Ответы [ 2 ]

2 голосов
/ 11 января 2011

NSString имеет метод -dataUsingEncoding:, который можно использовать для преобразования NSString экземпляров в NSData экземпляров. После этого вы можете использовать категорию MG Base64.

0 голосов
/ 11 января 2011

Вы создали категорию для использования метода BASE64Encoding в вашем классе NSData?здесь я сделал учебник для простого создания категорий, которые в основном являются модификациями существующего класса, в данном случае NSData: http://www.donttouchmycode.com/objective-c-class/extending-an-existing-class-with-categories я надеюсь, что это может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...