您的位置:首页 > 理论基础 > 计算机网络

Asihttprequest Cookie的使用(二)

2014-04-12 10:36 686 查看
最近项目中要用Cookie来实现登录,之前的项目都是保存的帐号和加密过后的密码,对这块不是很了解。Cookie登录就是判断本地有没有Cookie有的话直接登陆,项目里的一些接口在请求中加上自定义的Cookie。项目使用的是asigttprequest这个开源框架。

后台登录的实现需要2个过程,一是保存Cookie,二是上传Cookie。

在第一次登录时要保存下Cookie的Token,这个是要需要和后台做好约定的。第一次登录时会返给你后台的Cookie信息,

[request responseCookies]方法可以得到Cookie数组的信息,

NSDictionary *headers = [request responseHeaders];

NSString *setcookie = [headers objectForKey:@"Set-Cookie"] ;
这2个方法可以得到你想要的token.在得到的token字符串中分割时你想要的信息。
这时利用NSUserDefaults把token保存下来。方便后面使用cookie登录。
接下来的工作是上传保存下来的cookie,在asihttprequest文档上也有说明。
代码如下:
NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
[properties setValue:[NSString stringWithFormat:@"%@",[GUserSetting provider].UserCookie] forKey:NSHTTPCookieValue];

[properties setValue:@"SessionId" forKey:NSHTTPCookieName];
[properties setValue:domain forKey:NSHTTPCookieDomain];
[properties setValue:@"/" forKey:NSHTTPCookiePath];
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease];

//NSLog(@"%@",cookie);
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];
这里需要注意的是,

NSHTTPCookieName是和服务器约定好的token,
NSHTTPCookieValue是你要刚才保存下来的token值,

NSHTTPCookieDomain和NSHTTPCookiePath一定要加上,不然会上传不成功的Cookie。
在asihttrequest时使用时要把setUseCookiePersistence设为NO;
我这样我们在用Cookie登录时只要把把保存下的Cookie上传到服务器就可以正常使用接口了,不会提示未登录。

2014年8月5日:

在介绍篇别人写的关于AFNetworking Cookie的文章
http://www.skyfox.org/ios-url-request-cookie.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: