cookie三种逆天写法

在APP开发中,cookie也开始变的越来越重要了。为了更好的切换,注销和登录账户,就必须熟悉cookie的用法。
花了点时间把代码整理了一下,注释也都标上了

1,获取cookie
获取cookie只能在请求中获取cookie,否则时获取不到的,url就不给出了,大家用自己的url测试一下就行。
获取到cookie后把cookie进行归档保存到userDefaults里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma mark 获取并保存cookie到userDefaults
- ( void )getAndSaveCookie
{
     NSLog ( @"=============获取cookie==============" );
     NSString *urlString =  @"" ;
 
     //请求一个网址,即可分配到cookie
     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
     manager.responseSerializer = [AFJSONResponseSerializer  new ];
     [manager GET: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 ;
     }];
}

2,删除cookie
把获取到的cookie删除掉,该步骤可以用在注销或者切换账号里。
当前,我这里删除cookie是为了检测后面的通过本地存储的数据进行设置cookie是否成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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" );
}

3,通过本地存储的数据设置cookie
把本地的cookie取出并反归档,设置到cookie中,并且检测cookie是否设置成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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" );
}

看一下运行截图
屏幕快照 2015-05-19 下午5.29.45

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值