2017-07-13 82 views
0

我需要從一個http頭中提取一些數據。在被服務器發送之前,數據已經被base64編碼,然後被URL編碼。報頭是這樣的:從http頭中提取base64編碼數據爲NSData或NSString?

<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

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; 
}