【问题标题】:iPhone 3.2 Base64 EncodingiPhone 3.2 Base64 编码
【发布时间】: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


    【解决方案1】:

    NSString 有一个-dataUsingEncoding: 方法,您可以使用该方法将NSString 实例转换为NSData 实例。之后就可以使用MG的Base64类了。

    【讨论】:

    • 你的意思是把这行代码改成这样吗? NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, password] dataUsingEncoding:NSUTF8StringEncoding] dataFromBase64String];或者像这样 NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, password] dataUsingEncoding:NSUTF8StringEncoding] base64EncodedString];
    • 已修复!我有一个项目引用了另一个。我无法让它在辅助项目中工作,但是当我将 #import "NSData+Base64.h" 放在基础项目应用程序前缀头文件 (.pch) 中并将该类添加到基础项目中时,它就奏效了.感谢您的帮助。
    【解决方案2】:

    您是否已创建类别以在您的 NSData 类中使用 BASE64Encoding 方法?在这里我做了一个教程来轻松创建类别,基本上是对现有类的修改,在这种情况下是 NSData:http://www.donttouchmycode.com/objective-c-class/extending-an-existing-class-with-categories 我希望这可以帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2012-02-25
      相关资源
      最近更新 更多