iOS开发-聊聊Cookie的使用.

这里拿我之前的一个项目作为例子.

项目需求: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;

}

}

iOS开发-聊聊Cookie的使用._第1张图片

登录成功后,将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]]]];


以上是我对于cookie的理解使用.如果有错误的话.欢迎指出.谢谢!

(转载请标明出处)

你可能感兴趣的:(iOS开发-聊聊Cookie的使用.)