NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURLURLWithString:@"请求地址] ];
NSData *UserData = [NSKeyedArchiver archivedDataWithRootObject:cookies] ;
[[NSUserDefaults standardUserDefaults] setObject:UserData forKey:@"kUserDefaultsCookie"] ;
第二步,在需要自动登陆时获取cookie值,ios的网络请求函数会请这个cookie值自动加入请求url
NSData *cookieData = [[NSUserDefaults standardUserDefaults] objectForKey:@"kUserDefaultsCookie"] ;
if ([cookieData length]) {
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookieData] ;
NSHTTPCookie *cookie ;
for (cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie] ;
}
manager. requestSerializer . HTTPShouldHandleCookies = YES ;
manager. responseSerializer = [ AFJSONResponseSerializer serializer ];
[manager. requestSerializer setValue : [[ NSUserDefaults standardUserDefaults ] objectForKey : @"cooKie" ] forHTTPHeaderField : @"Cookie" ];
manager. responseSerializer . acceptableContentTypes = [ NSSet setWithObjects : @"text/html" , @"application/json" , nil ];
NSLog ( @"=====++++++%@" , [[ NSUserDefaults standardUserDefaults ] objectForKey : @"cooKie" ]);
NSDictionary * dataDic = [ Sign getData :parameter];
NSMutableDictionary *dic = [ NSMutableDictionary dictionaryWithDictionary :dataDic];
NSString * signString = [ Sign getSign :parameter];
[dic setValue :signString forKeyPath : @"sign" ];
[dic setValue : @"ios" forKeyPath : @"partner" ];
NSString *urlString = [ NSString stringWithFormat : RequestTheAddress , url];
[manager POST :[urlString stringByAddingPercentEncodingWithAllowedCharacters :[ NSCharacterSet URLQueryAllowedCharacterSet ]] parameters :dic success :^( AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *fields= [operation. response allHeaderFields ];
NSArray *cookies=[ NSHTTPCookie cookiesWithResponseHeaderFields :fields forURL :[ NSURL URLWithString :[urlString stringByAddingPercentEncodingWithAllowedCharacters :[ NSCharacterSet URLQueryAllowedCharacterSet ]]]];
NSDictionary * requestFields=[ NSHTTPCookie requestHeaderFieldsWithCookies :cookies];
NSLog ( @"%@" , requestFields);
if ([url isEqualToString : @"m=api&c=user&a=login" ]) {
if (requestFields. allKeys . count != 0 ) {
[[ NSUserDefaults standardUserDefaults ] setObject :[requestFields objectForKey : @"Cookie" ] forKey : @"cooKie" ];
}
}
NSLog ( @"=====%@" , [[ NSUserDefaults standardUserDefaults ] objectForKey : @"cooKie" ]);
network(responseObject);
} failure :^( AFHTTPRequestOperation *operation, NSError *error) {
NSLog ( @"error = %@" , operation. responseString );
本文介绍了一种在iOS应用中实现自动登录的方法,并详细解释了如何使用NSHTTPCookieStorage来存储和读取cookie,以及如何利用AFNetworking进行带有cookie的网络请求。

1435

被折叠的 条评论
为什么被折叠?



