登錄成功后
NSUserDefaults * defaults =[NSUserDefaults standardUserDefaults];
NSArray * allCookies =[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie * cookie in allCookies) {
if ([cookie.name isEqualToString:@"PHPSESSID"]) {
NSMutableDictionary *cookieDictonary =[NSMutableDictionary dictionaryWithDictionary:[defaults dictionaryForKey:@"MyProjectCookie"]];
[cookieDictonary setValue:cookie.properties forKey:@"cookieDict"];
[defaults setObject:cookieDictonary forKey:@"MyProjectCookie"];
[defaults synchronize];
break;
}
}
AF框架中
//設(shè)置請求頭
if (![requestURLString containsString:BP_LOGIN]||![requestURLString containsString:BP_REGISTERED]) {
NSLog(@"不是登錄接口%@",[[[NSUserDefaults standardUserDefaults] objectForKey:@"MyProjectCookie"] valueForKey:@"cookieDict"]);
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"MyProjectCookie"] valueForKey:@"cookieDict"]!=nil&&[GLUserModel shareInstance].loginY) {
NSHTTPCookie *cookie =[NSHTTPCookie cookieWithProperties:[[[NSUserDefaults standardUserDefaults] objectForKey:@"MyProjectCookie"] valueForKey:@"cookieDict"]];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}
手動創(chuàng)建cookie
// 創(chuàng)建cookie屬性字典
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:@"username" forKey:NSHTTPCookieName]; // 手動設(shè)置cookie的屬性
[cookieProperties setObject:@"rainbird" forKey:NSHTTPCookieValue];
[cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
// 通過NSHTTPCookie的cookieWithProperties方法,將屬性字典傳入進行初始化,對象返回的是一個NSHTTPCookie對象,創(chuàng)建完成后進行下一步操作:
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
// 將手動創(chuàng)建返回的NSHTTPCookie對象添加到NSHTTPCookieStorage中,在iOS中使用[NSHTTPCookie]
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
(http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSHTTPCookie_Class/Reference/Reference.html)類封裝一條cookie,通過NSHTTPCookie的方法讀取到cookie的通用屬性航背。在此聲明一點:如果你的request里面明確不使用cookie,那么要講cookie的([HTTPShouldHandleCookies]
(http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html#//apple_ref/occ/instm/NSURLRequest/HTTPShouldHandleCookies)設(shè)為NO),否則URL loading system會自動為NSURLRequest發(fā)送合適的存儲cookie。
//文章來源http://jinqianchina.github.io/2016/01/07/Cookie%E6%9C%BA%E5%88%B6%E4%BB%A5%E5%8F%8Acookie%E5%9C%A8iOS%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D/
http://www.reibang.com/p/65094611980c