2015-08-09 67 views
0

我有一个数组(NSHTTPCookieStorage)内部的数据...NSHTTPCookieStorage阵列 - 解析出来的价值

NSARRAY *httpCookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:aHttpUrl]; 

我知道一个事实,即有被存储3块饼干(因为我可以看到他们在的NSLog )。

我不知道如何根据“名称”获得1个特定的cookie值。

例子:<NSHTTPCookie version:0 name:\"username\" value:\"namehere\" expiresDate:2035-08-3 23:12:50 +0000 created:2015-08-08 23:12:49 +0000 (4.60768e+08) sessionOnly:FALSE domain:\"somedomain.com\" path:\"/example\" isSecure:FALSE>

...我如何获得“价值”的内容,这样我就可以使用它作为一个字符串?

回答

0

像这样

NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:YOUR_NETWORK_URL]]; 
for (NSHTTPCookie* cookie in cookies) 
{ 
    NSLog(@"%@, ", [cookie valueForKey:@"version"]); 
    NSLog(@"%@, ", [cookie valueForKey:@"name"]); 

    NSString * this = [cookie valueForKey:@"name"]; 

    NSLog(@"%@, ", [cookie valueForKey:@"value"]); 
    NSLog(@"%@, ", [cookie valueForKey:@"expiresDate"]); 
    NSLog(@"%@, ", [cookie valueForKey:@"created"]); 
    NSLog(@"%@, ", [cookie valueForKey:@"sessionOnly"]); 
    NSLog(@"%@, ", [cookie valueForKey:@"domain"]); 
    NSLog(@"%@, ", [cookie valueForKey:@"path"]); 
    NSLog(@"%@, ", [cookie valueForKey:@"isSecure"]); 
} 

或 3个曲奇,

NSString * this1 = [cookies[0] valueForKey:@"name"] 
NSString * this2 = [cookies[1] valueForKey:@"name"] 
NSString * this3 = [cookies[2] valueForKey:@"name"] 

等,等,等,这样做将所有Cookie使用键值

操纵饼干:

NSString *alipaySetCookieString = @"CAKEPHP=nil; path=#; domain=#; expires=Wed, 30-Nov-2001 01:01:01 GMT"; 
NSHTTPCookie * clok = [alipaySetCookieString cookie]; 

使用该: 报头类别 “的NSString + Cookie.h” 为类别

@interface NSString(Cookie) 


- (NSHTTPCookie *)cookie; 

@end 

执行文件 “的NSString + Cookie.m”

#import "NSString+Cookie.h" 

@implementation NSString(Cookie) 

- (NSDictionary *)cookieMap{ 
    NSMutableDictionary *cookieMap = [NSMutableDictionary dictionary]; 

    NSArray *cookieKeyValueStrings = [self componentsSeparatedByString:@";"]; 
    for (NSString *cookieKeyValueString in cookieKeyValueStrings) { 
     NSRange separatorRange = [cookieKeyValueString rangeOfString:@"="]; 

     if (separatorRange.location != NSNotFound && 
      separatorRange.location > 0 && 
      separatorRange.location < ([cookieKeyValueString length] - 1)) { 
      NSRange keyRange = NSMakeRange(0, separatorRange.location); 
      NSString *key = [cookieKeyValueString substringWithRange:keyRange]; 
      NSString *value = [cookieKeyValueString substringFromIndex:separatorRange.location + separatorRange.length]; 

      key = [key stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
      value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
      [cookieMap setObject:value forKey:key]; 

     } 
    } 
    return cookieMap; 
} 

- (NSDictionary *)cookieProperties { 

    NSDictionary *cookieMap = [self cookieMap]; 

    NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary]; 
    for (NSString *key in [cookieMap allKeys]) { 

     NSString *value = [cookieMap objectForKey:key]; 
     NSString *uppercaseKey = [key uppercaseString]; 

     if ([uppercaseKey isEqualToString:@"DOMAIN"]) { 
      if (![value hasPrefix:@"."] && ![value hasPrefix:@"www"]) { 
       value = [NSString stringWithFormat:@".%@",value]; 
      } 
      [cookieProperties setObject:value forKey:NSHTTPCookieDomain]; 
     }else if ([uppercaseKey isEqualToString:@"VERSION"]) { 
      [cookieProperties setObject:value forKey:NSHTTPCookieVersion]; 
     }else if ([uppercaseKey isEqualToString:@"MAX-AGE"]||[uppercaseKey isEqualToString:@"MAXAGE"]) { 
      [cookieProperties setObject:value forKey:NSHTTPCookieMaximumAge]; 
     }else if ([uppercaseKey isEqualToString:@"PATH"]) { 
      [cookieProperties setObject:value forKey:NSHTTPCookiePath]; 
     }else if([uppercaseKey isEqualToString:@"ORIGINURL"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookieOriginURL]; 
     }else if([uppercaseKey isEqualToString:@"PORT"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookiePort]; 
     }else if([uppercaseKey isEqualToString:@"SECURE"]||[uppercaseKey isEqualToString:@"ISSECURE"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookieSecure]; 
     }else if([uppercaseKey isEqualToString:@"COMMENT"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookieComment]; 
     }else if([uppercaseKey isEqualToString:@"COMMENTURL"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookieCommentURL]; 
     }else if([uppercaseKey isEqualToString:@"EXPIRES"]){ 
      NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
      [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
      dateFormatter.dateFormat = @"EEE, dd-MMM-yyyy HH:mm:ss zzz"; 
      [cookieProperties setObject:[dateFormatter dateFromString:value] forKey:NSHTTPCookieExpires]; 
     }else if([uppercaseKey isEqualToString:@"DISCART"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookieDiscard]; 
     }else if([uppercaseKey isEqualToString:@"NAME"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookieName]; 
     }else if([uppercaseKey isEqualToString:@"VALUE"]){ 
      [cookieProperties setObject:value forKey:NSHTTPCookieValue]; 
     }else{ 
      [cookieProperties setObject:key forKey:NSHTTPCookieName]; 
      [cookieProperties setObject:value forKey:NSHTTPCookieValue]; 
     } 
    } 

    if (![cookieProperties objectForKey:NSHTTPCookiePath]) { 
     [cookieProperties setObject:@"/" forKey:NSHTTPCookiePath]; 
    } 
    return cookieProperties; 
} 

- (NSHTTPCookie *)cookie{ 
    NSDictionary *cookieProperties = [self cookieProperties]; 
    NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties]; 
    return cookie; 
} 

@end