cookie

来源:互联网 发布:剪裁照片的软件 编辑:程序博客网 时间:2024/06/03 18:25
//创建管理cookie类
#import <Foundation/Foundation.h>

@interface CookieTool : NSObject

//cookie
@property (nonatomic,strong)NSString * cookie;

//单例
+ (CookieTool *)defaultCookieTool;

//获取cookie
- (void)getAndSaveCookie;

//删除cookie
- (void)deleteCookie;

- (void)deleateUserDefaul;

@end


#import "CookieTool.h"

@implementation CookieTool

static CookieTool *cookieTool = nil;

+ (CookieTool *)defaultCookieTool
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        cookieTool = [[CookieTool alloc] init];
    });
    return cookieTool;
}

//登陆获取cookie
- (void)getAndSaveCookie{
    
    //获取cookie
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    NSMutableDictionary *properties = [NSMutableDictionary dictionary];
    
    MYLog(@"%lu",(unsigned long)cookies.count);
    
    if (cookies.count>0) {
        
        NSHTTPCookie *tempCookie = cookies[0];
        //打印获得的cookie
        NSLog(@"getCookie:1 %@", tempCookie);
               MYLog(@"%@",tempCookie.name);
        
        MYLog(@"====%@",properties);
        
        MYLog(@"%@",properties[@"cookie"]);
    }
    for (NSHTTPCookie *tempCookie in cookies) {
        
        //打印获得的cookie
        
         MYLog(@"%@",tempCookie.name);
        if([tempCookie.name isEqualToString:@"cookieId"]){
            
            [self deleateUserDefaul];
            NSLog(@"getCookie:1 %@,%@", tempCookie.value,tempCookie.name);
            [properties setValue:tempCookie.value forKey:@"cookie"];
            
            //存储归档后的cookie
            NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
            
            [userDefaults setObject: properties forKey: @"Cookie"];

        }

    }
    
    /*
     * 把cookie进行归档并转换为NSData类型
     * 注意:cookie不能直接转换为NSData类型,否则会引起崩溃。
     * 所以先进行归档处理,再转换为Data
     */
    //        NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
    
    //存储归档后的cookie
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    
    [userDefaults setObject: properties forKey: @"Cookie"];
    
}

#pragma mark 删除cookie
- (void)deleteCookie
{
    NSLog(@"============删除cookie===============");
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    
    //删除cookie
    for (NSHTTPCookie *tempCookie in cookies) {
        
        [cookieStorage deleteCookie:tempCookie];
    }
    
    //把cookie打印出来,检测是否已经删除
    NSArray *cookiesAfterDelete = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    for (NSHTTPCookie *tempCookie in cookiesAfterDelete) {
        NSLog(@"cookieAfterDelete: %@", tempCookie);
    }
    NSLog(@"\n");
}

- (void)deleateUserDefaul{
    
    [[NSUserDefaults
      standardUserDefaults] removeObjectForKey:@"Cookie"];
    [[NSUserDefaults
      standardUserDefaults] synchronize];

}
- (NSString *)cookie{
    
    NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
    NSDictionary *cookieId = [ user objectForKey:@"Cookie"];
    _cookie =  cookieId[@"cookie"];
    return _cookie;
}


请求时设置请求头

    NSString *cookie = [NSString stringWithFormat:@"cookieId=%@",[CookieTool defaultCookieTool].cookie];

   [manager.requestSerializer setValue:cookie forHTTPHeaderField:@"Cookie"];


0 0
原创粉丝点击