这里拿我之前的一个项目作为例子.
项目需求:1.用cookie做自动登录;
2.所有的请求都必须带上登录拿到的cookie,作为身份识别.
这里我使用的是AFN请求.
废话不多说,直接上代码.
//获取cookie
NSArray*allCookies = [[NSHTTPCookieStoragesharedHTTPCookieStorage]cookies];
[[NSUserDefaultsstandardUserDefaults]setObject:[allCookiescomponentsJoinedByString:@","]forKey:COOKIE];
for(NSHTTPCookie*tempCookieinallCookies)
{
//打印cookies
if([tempCookie.nameisEqualToString:@"JSESSIONID"]) {
NSDictionary*Request = [NSHTTPCookierequestHeaderFieldsWithCookies:allCookies];
[usersetObject:[RequestobjectForKey:@"Cookie"]forKey:@"mUserDefaultsCookie"];
[usersynchronize];
break;
}
}
登录成功后,将cookie存储到缓存中.
下面是将cookie塞到请求头中,做请求
AFN:
AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];
manager.requestSerializer= [AFHTTPRequestSerializerserializer];
manager.responseSerializer= [AFJSONResponseSerializerserializer];
[manager.requestSerializersetValue:[[NSUserDefaultsstandardUserDefaults]objectForKey:@"mUserDefaultsCookie"]forHTTPHeaderField:@"Cookie"];
上面就是cookie的基础使用了.
对了,这里要提一下.AFN做请求的时候是会自动携带之前请求URL的cookie的.
所以切换账户的时候,需要删除之前的cookie.否则可能导致登录失败.
所以退出登录最好remove下
[[NSURLCachesharedURLCache]removeCachedResponseForRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:[NSStringstringWithFormat:@"%@/login",HTTP_SERVER_ADDRESS]]]];