iOS cookie的用法

來源:互聯網
上載者:User

標籤:top   nbsp   success   roo   轉換   request   zip   manager   資料   

在APP開發中,cookie也開始變的越來越重要了。為了更好的切換,登出和登入賬戶,就必須熟悉cookie的用法。
花了點時間把代碼整理了一下,注釋也都標上了

1,擷取cookie
擷取cookie只能在請求中擷取cookie,否則時擷取不到的,url就不給出了,大家用自己的url測試一下就行。
擷取到cookie後把cookie進行歸檔儲存到userDefaults裡

123456789101112131415161718192021222324252627282930313233343536373839 #pragma mark 擷取並儲存cookie到userDefaults- (void)getAndSaveCookie{    NSLog(@"=============擷取cookie==============");    NSString *urlString = @"";     //請求一個網址,即可分配到cookie    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];    manager.responseSerializer = [AFJSONResponseSerializer new];    [manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {         //擷取cookie        NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];        for (NSHTTPCookie *tempCookie in cookies) {            //列印獲得的cookie            NSLog(@"getCookie: %@", tempCookie);        }         /*         * 把cookie進行歸檔並轉換為NSData類型         * 注意:cookie不能直接轉換為NSData類型,否則會引起崩潰。         * 所以先進行歸檔處理,再轉換為Data         */        NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];         //儲存歸檔後的cookie        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];        [userDefaults setObject: cookiesData forKey: @"cookie"];        NSLog(@"\n");         [self deleteCookie];         [self setCoookie];     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {         nil;    }];}

2,刪除cookie
把擷取到的cookie刪除掉,該步驟可以用在登出或者切換帳號裡。
當前,我這裡刪除cookie是為了檢測後面的通過本機存放區的資料進行設定cookie是否成功

12345678910111213141516171819 #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");}

3,通過本機存放區的資料設定cookie
把本地的cookie取出並反歸檔,設定到cookie中,並且檢測cookie是否設定成功

12345678910111213141516171819202122232425262728 #pragma mark 再取出儲存的cookie重新設定cookie- (void)setCoookie{    NSLog(@"============再取出儲存的cookie重新設定cookie===============");    //取出儲存的cookie    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];     //對取出的cookie進行反歸檔處理    NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:[userDefaults objectForKey:@"cookie"]];     if (cookies) {        NSLog(@"有cookie");        //設定cookie        NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];        for (id cookie in cookies) {            [cookieStorage setCookie:(NSHTTPCookie *)cookie];        }    }else{        NSLog(@"無cookie");    }     //列印cookie,檢測是否成功設定了cookie    NSArray *cookiesA = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];    for (NSHTTPCookie *cookie in cookiesA) {        NSLog(@"setCookie: %@", cookie);    }    NSLog(@"\n");}

看一下運行

最後,奉上demo
CookieText

iOS cookie的用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.