我正在將一個基本HTTP授權標頭添加到請求中,但需要將authString編碼爲Base64。有關信息,由於產生了過多的401錯誤,我無法使用didReceiveAuthenticationChallenge。iPhone 3.2 Base64編碼
以下代碼在iOS 4.2中正常工作,但在iOS 3.2上無法正常工作(並且我想支持此操作)。
NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, password] dataUsingEncoding:NSUTF8StringEncoding] base64Encoding];
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.這是我在這裏的第一個問題,所以在我身上輕鬆點!
你的意思是把這行代碼改成這樣的東西? NSString * authString = [[[NSString stringWithFormat:@「%@:%@」,user,password] dataUsingEncoding:NSUTF8StringEncoding] dataFromBase64String]; NSString * authString = [[[NSString stringWithFormat:@「%@:%@」,user,password] dataUsingEncoding:NSUTF8StringEncoding] base64EncodedString]; – 2011-01-11 15:07:41