iOS 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");

}

看一下运行截图

最后,奉上demo
CookieText

时间: 2024-10-14 00:55:33

iOS cookie的用法的相关文章

IOS中NSdate用法

// date方法返回的就是当前时间(now) 02. NSDate *date = [NSDate date]; 03.// now: 11:12:40 04.// date: 11:12:50 05. date = [NSDate dateWithTimeIntervalSinceNow:10];//返回当前时间10秒后的时间 06. // 从1970-1-1 00:00:00开始 07. date = [NSDate dateWithTimeIntervalSince1970:10];//

IOS中NSSarry用法

一.创建数组 // 创建一个空的数组 02.NSArray *array = [NSArray array]; 03.// 创建有1个元素的数组 04.array = [NSArray arrayWithObject:@"123"]; 05.// 创建有多个元素的数组 06.array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil nil]; 07.NSArray *arr

asp.net中Cookie的用法【转】

比如建立一个名为aspcn,值为灌水小鱼的cookieHttpCookie cookie = new HttpCookie["aspcn"];cookie.Value = "灌水小鱼";Response.AppendCookie(cookie);取出Cookie值也很简单HttpCookie cookie = Request.Cookies["aspcn"];cookieValue = cookie.Value;在一个Cookie中储存多个信息,

iOS Cookie学习(NSHTTPCookieStorage的使用)

最近也是忙里偷闲,无意中发现了一位大牛的文章,小小的研究了一下HTTP.今天先写一点Cookie,之前有过文章都是关于Cookie的,也没有深入研究,今天也算是一起学习吧. @interface FQWebGlobalCookies : NSObject /* 全局单例 */ + (id)globalCookiesManager; /* 对每份URL产生的Cookie 保存起来,以便管理 对响应头域中的cookie进行保存 */ - (void)storeResponseCookies:(NSD

php中cookie的用法

php中cookie的用法是怎么样的?在php中使用cookie需要注意什么?cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制. PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似. 本文转自: http://blog.chinaunix.net/u/27731/showart_259031.html 1.1 设置cookie:     可以用 setcookie(

iOS中block用法之两个界面传值问题

Block的使用有很多方面,其中传值只是它的一小部分,但是很常用更实用,下面介绍Block在两个界面之间的传值用法: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个Label和一个Button,其中Label是为了显示第二个视图控制器传过来的字符串, Button是为了push到第二个界面. 第二个界面的只创建一个TextField,是为了输入文字,当输入文字并且返回第一个界面的时候(第二个视图将要消失的时候),就将这个 TextFiled中的文字传给第一个界面并且显示在

IOS NSUserDefaults 讲解 用法

IOS NSUserDefaults 讲解 用法 NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯. 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了. NSUserDefaults支持的数据格

iOS popToViewController具体用法

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES]; 或 searchBarViewController *searchBarVC = [[searchBarViewController alloc]init]; for (UIViewController *temp in self.navigationCo

iOS字符串常用用法

创建一个新字符串并将其设置为 path 指定的文件的内容,使用字符编码enc,在error上返回错误 + (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error; 创建一个新字符串并将其设置为 url 指定的内容,使用字符编码enc,在error上返回错误+ (id)stringWithContentsOfFile:(NSString *)path encodi