Asihttprequest Cookie的使用(二)

117 篇文章 0 订阅

最近项目中要用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



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值