#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self getAndSaveCookie];
}
#pragma mark 获取并保存cookie到userDefaults
- (void)getAndSaveCookie
{
NSLog(@"=============获取cookie==============");
NSString *urlString = @"";
//请求一个网址,即可分配到cookie
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer new];
[manager POST:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
//获取cookie
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *tempCookie in cookies) {
//打印获得的cookie
NSLog(@"getCookie: %@", tempCookie);
}
/*
* 把cookie进行归档并转换为NSData类型
* 注意:cookie不能直接转换为NSData类型,否则会引起崩溃。
* 所以先进行归档处理,再转换为Data
*/
NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
//存储归档后的cookie
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject: cookiesData forKey: @"cookie"];
NSLog(@"\n");
[self deleteCookie];
[self setCoookie];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
nil;
}];
}
#pragma mark 删除cookie
- (void)deleteCookie
{
NSLog(@"============删除cookie===============");
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
//删除cookie
for (NSHTTPCookie *tempCookie in cookies) {
[cookieStorage deleteCookie:tempCookie];
}
//把cookie打印出来,检测是否已经删除
NSArray *cookiesAfterDelete = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *tempCookie in cookiesAfterDelete) {
NSLog(@"cookieAfterDelete: %@", tempCookie);
}
NSLog(@"\n");
}
#pragma mark 再取出保存的cookie重新设置cookie
- (void)setCoookie
{
NSLog(@"============再取出保存的cookie重新设置cookie===============");
//取出保存的cookie
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//对取出的cookie进行反归档处理
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:[userDefaults objectForKey:@"cookie"]];
if (cookies) {
NSLog(@"有cookie");
//设置cookie
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (id cookie in cookies) {
[cookieStorage setCookie:(NSHTTPCookie *)cookie];
}
}else{
NSLog(@"无cookie");
}
//打印cookie,检测是否成功设置了cookie
NSArray *cookiesA = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *cookie in cookiesA) {
NSLog(@"setCookie: %@", cookie);
}
NSLog(@"\n");
}
@end
cookie设置
最新推荐文章于 2023-02-15 15:02:48 发布