【发布时间】:2011-01-11 14:31:12
【问题描述】:
我正在将基本 HTTP 授权标头添加到请求中,但需要将 authString 编码为 Base64。有关信息,由于产生过多的 401 错误,我无法使用 didReceiveAuthenticationChallenge。
以下代码在 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]:无法识别的选择器已发送到实例
我错过了导入还是什么?
附:这是我在这里的第一个问题,所以请放轻松!
【问题讨论】:
标签: iphone authentication encoding base64