【问题标题】:Extract base64 encoded data from a http header as NSData or NSString?从 http 标头中提取 base64 编码数据作为 NSData 或 NSString?
【发布时间】:2017-07-14 00:31:08
【问题描述】:

我需要从 http 标头中提取一些数据。在由服务器发送之前,数据已经过 base64 编码,然后是 URL 编码。标题看起来像:

<snip>
Server = Apache;
"Transfer-Encoding" = Identity;
"Www-Authenticate" = "Basic realm=\"itYNcEpMfSPfewXAOte3II6xXsM6aNBO197bBuvb9gvWVl7Xo%2FQJ9j9r0hHz0k12xLRqlyvczoCM7kI9q1opHj%2BKYiPz73DqypNFgYGleR3n0bcVTto80Hq55i6nsgPaCnHrWJOdQs1HY%2FzzuK6vbZYAIofiB7VKSwdi00ZmkbQi9Pi05i4lCaCu%2FwV%2FXOOS95oL8TQ%3D\"";

为了去除 URL 编码和 base64 编码,我应该将原始标头数据提取为 NSString 还是 NSData?

NSString* option1 = [header objectForKey: @"Www-Authenticate"];
NSData* option2 = [header objectForKey: @"Www-Authenticate"];

二选一重要吗,还是可以平等使用这两个选项?

(注意我不是在问如何从 URL 编码解码和从 Base64 解码,我是在问起点应该是 NSString 还是 NSData 以及为什么,或者没关系)。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    base64 这是字符串,可以转换成 NSData。

    NSString* option1 = [header objectForKey: @"Www-Authenticate"];
    NSData *data = [NSData dataFromBase64String:option1];
    

    【讨论】:

      【解决方案2】:
      - (NSString*)encodeTo64:(NSString*)fromString
      {
          NSData *plainData = [fromString dataUsingEncoding:NSUTF8StringEncoding];
          NSString *base64String;
          if ([plainData respondsToSelector:@selector(base64EncodedStringWithOptions:)]) {
              base64String = [plainData base64EncodedStringWithOptions:kNilOptions];  // iOS 7+
          } else {
              base64String = [plainData base64Encoding];                              // pre iOS7
          }
      
      
          return base64String;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-12-17
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 2010-11-23
        • 2012-04-13
        • 1970-01-01
        相关资源
        最近更新 更多