cookie三种逆天写法
来源:互联网 发布:用c语言实现约瑟夫环 编辑:程序博客网 时间:2024/06/03 21:39
在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"
);
}
看一下运行截图
阅读全文
0 0
- cookie三种逆天写法
- 多值Cookie的写法
- Cookie的写法
- 原生cookie写法
- cookie js写法 案例模板
- 登录页面Cookie的写法!
- sessionStorage,UserDataStorage,cookie全兼容写法存在的问题
- 写法
- URLEncoder cookie中文乱码问题--前后台交互写法-简单解决
- Cookie
- cookie
- cookie
- Cookie
- cookie
- Cookie
- cookie
- Cookie
- Cookie
- 简要介绍一下asynctask和handler的优缺点
- android 登陆、提交数据或加载数据时提示页面
- 关于虚拟币的投资
- mybatis的简单基本实现
- Android弹窗插件 sweet-alert-dialog
- cookie三种逆天写法
- C#之GridControl导出为Excel
- 互联网造车 梦想何时落地?
- 统计iOS项目代码行数
- Redisson 分布式锁实现分析
- A build only device cannot be used to run this target.
- Dubbo——过滤器链
- IPUtil 工具类总结
- 关于js的ajax方法导致跨域问题的解决办法