Asihttprequest Cookie的使用(二)

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



你可能感兴趣的:(Asihttprequest Cookie的使用(二))