iOS持久化Cookies与清空(可以用来保存登录状态和退出登录)

//本地拿到存储的cookies

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"cookiesInfo" ofType:@"plist"];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
NSArray *cookies = [data objectForKey:@"cookiesKey"];
NSURL *url = [NSURL URLWithString:HomeBseUrl];
if (cookies) {
    if (isClearCookies) {
        //清除cookies
        NSHTTPCookie *cookie;
        NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        for (cookie in [storage cookies])
        {
            [storage deleteCookie:cookie];
        }
        //缓存web清除
        [[NSURLCache sharedURLCache] removeAllCachedResponses];
        NSURLCache * cache = [NSURLCache sharedURLCache];
        [cache removeAllCachedResponses];
        [cache setDiskCapacity:0];
        [cache setMemoryCapacity:0];
        if (url) {//清除所有cookie
            NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url];
            for (int i = 0; i < [cookies count]; i++) {
                NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
                [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
            }
        }
    }else{
       //设置cookies 
        NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
        [cookieProperties setObject:[cookies objectAtIndex:0] forKey:NSHTTPCookieName];
        [cookieProperties setObject:[cookies objectAtIndex:1] forKey:NSHTTPCookieValue];
        [cookieProperties setObject:[cookies objectAtIndex:3] forKey:NSHTTPCookieDomain];
        [cookieProperties setObject:[cookies objectAtIndex:4] forKey:NSHTTPCookiePath];
        NSHTTPCookie *cookieuser = [NSHTTPCookie cookieWithProperties:cookieProperties];
        [[NSHTTPCookieStorage sharedHTTPCookieStorage]  setCookie:cookieuser]; 
    } 
}

//设置完后再加载webView loadingrequest

//获取cookies 并持久化

NSHTTPCookie *cookie;
NSHTTPCookieStorage *nCookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookiesURL = [nCookies cookiesForURL:[NSURL URLWithString:HomeBseUrl]];
for (id c in cookiesURL)
{
    if ([c isKindOfClass:[NSHTTPCookie class]])
    {
        cookie=(NSHTTPCookie *)c;
        if ([cookie.name isEqualToString:@"PHPSESSID"]) {
            NSNumber *sessionOnly = [NSNumber numberWithBool:cookie.sessionOnly];
            NSNumber *isSecure = [NSNumber numberWithBool:cookie.isSecure];
            NSArray *cookies = [NSArray arrayWithObjects:cookie.name, cookie.value, sessionOnly,          cookie.domain, cookie.path, isSecure, nil];
            NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"cookiesInfo" ofType:@"plist"];
            NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
            [data setObject:cookies forKey:@"cookiesKey"];
            NSLog(@"________%@", data);//直接打印数据。
            [data writeToFile:plistPath atomically:YES]; 
            break;
        }
    }
}

//如果存取不成功,可以新建一个名为cookiesInfo的plist文件

用的话自己调整一下存cookies 的地方 我目前在viewWilldisappear 和 应用程序退出时存的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值