Http Cookie

作者: IceWall_Rin | 来源:发表于2016-06-23 11:06 被阅读126次

在APP开发中,cookie也开始变的越来越重要了。为了更好的切换,注销和登录账户,就必须熟悉cookie的用法。

花了点时间把代码整理了一下,注释也都标上了

1,获取cookie

获取cookie只能在请求中获取cookie,否则时获取不到的,url就不给出了,大家用自己的url测试一下就行。

获取到cookie后把cookie进行归档保存到userDefaults里

#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是否成功

#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是否设置成功

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

}

看一下运行截图

相关文章

  • Web存储

    Cookie HTTP Cookie简称cookie,在HTTP请求发送Set-Cookie HTTP头作为响应的...

  • 理解cookie、localStorage、sessionSto

    一、cookie 参考自MDN:HTTP cookies 概念 HTTP cookie也叫web cookie或浏...

  • 前端必备HTTP技能之cookie技术详解

    HTTP cookie(也称为web cookie,网络cookie,浏览器cookie或者简称cookie)是网...

  • Http Cookie

    在APP开发中,cookie也开始变的越来越重要了。为了更好的切换,注销和登录账户,就必须熟悉cookie的用法。...

  • [HTTP] Cookie

    可以笼统的将cookie分为两类:会话cookie和持久cookie会话cookie是一种临时cookie,它记录...

  • HTTP cookie

    一个 HTTP cookie 是服务端传给客户端浏览器的一小部分数据,可为无状态的HTTP协议提供前后请求间的上下...

  • HTTP cookie

    HTTP cookie 什么是cookie 因为HTTP的无状态特性,服务器无法分辨记录用户端状态。Cookie是...

  • Http Cookie

    Cookie Cookie的作用是管理服务器端和客户端之间状态,工作机制是用户识别和状态的管理,Web网站为了管理...

  • 前端调优23大规则(Part 4)

    Reduce cookie size减少cookie大小 HTTP Cookie(也叫Web Cookie或浏览器...

  • HTTP之Cookie&Session

    Cookie - 什么是cookie? MDN是这样说的:HTTP Cookie(也叫Web cookie或者浏览...

网友评论

    本文标题:Http Cookie

    本文链接:https://www.haomeiwen.com/subject/gkwndttx.html