登陆之后cookie存在,退出登陆之后,杀掉app,cookie失效,解决方法,存储本地,退出登陆之后,清除cookie 和本地存储的cookie
-(NSString*)getCookies{
//cookie,本地存储,iOS中,退出cookie自动清除
NSArray *arcCookies = [NSKeyedUnarchiver unarchiveObjectWithData: [[NSUserDefaults standardUserDefaults] objectForKey: @"kUserDefaultsCookie"]];
if(arcCookies.count!=0) {
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for(NSHTTPCookie*cookieinarcCookies){
[cookieStoragesetCookie: cookie];
}
}
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject:cookies];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaultssetObject: cookiesDataforKey:@"kUserDefaultsCookie"];
[defaultssynchronize];
NSMutableDictionary *cookieDic=[[NSMutableDictionary alloc]initWithCapacity:0];
for(NSHTTPCookie *cookie in [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies){
if ([AMTAPP.Server rangeOfString:cookie.domain].location == NSNotFound) {
// [cookieDic setValue:cookie.value forKey:cookie.name];
}else{
[cookieDicsetValue:cookie.valueforKey:cookie.name];
}
}
NSMutableString *cookieStr=[[NSMutableString alloc]initWithCapacity:0];
//之所以又从cookieDic里取一次,是因为cookieDic可以去除相同name的value,因为作用域或者其他原因,同一个name的cookie可以被当成是两个cookie
for(NSString*keyincookieDic){
[cookieStrappendFormat:@"%@=%@;",key,cookieDic[key]];
}
[cookieStrreplaceOccurrencesOfString:@";" withString:@"" options:0 range:NSMakeRange(cookieStr.length-1, 1)];
returncookieStr;
}











网友评论