我需要从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"];
选择一个是否重要,或者两个选项是否可以同等使用?
(注意我不是要问如何从Base64解码URL编码和解码,我问的问题是起点应该是NSString还是NSData以及为什么,或者无关紧要。)
答案 0 :(得分:0)
base64这是字符串,您可以将其转换为NSData。
NSString* option1 = [header objectForKey: @"Www-Authenticate"];
NSData *data = [NSData dataFromBase64String:option1];
答案 1 :(得分:-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;
}