Http Cookie

在APP開發中,cookie也開始變的越來越重要了。為了更好的切換,注銷和登錄賬戶,就必須熟悉cookie的用法。

花了點時間把代碼整理了一下,注釋也都標上了

1,獲取cookie

獲取cookie只能在請求中獲取cookie,否則時獲取不到的,url就不給出了,大家用自己的url測試一下就行。

獲取到cookie后把cookie進行歸檔保存到userDefaults里

#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是否成功

#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是否設置成功

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

}

看一下運行截圖

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容