Skip to content

Instantly share code, notes, and snippets.

@cikichen
Forked from wenshyansu/gist:2005654
Created February 15, 2019 09:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cikichen/f4fd5ddf1339fa30cc491b4507869dc0 to your computer and use it in GitHub Desktop.
Save cikichen/f4fd5ddf1339fa30cc491b4507869dc0 to your computer and use it in GitHub Desktop.
Cookie相關
//===================================================================================================
//取得與設定APP內部的cookie
//===================================================================================================
- (void)setCookie:(NSString *)key withValue:(NSString *)value {
NSArray *keys = [NSArray arrayWithObjects:
NSHTTPCookieDomain,
NSHTTPCookieExpires,
NSHTTPCookieName,
NSHTTPCookiePath,
NSHTTPCookieValue, nil];
NSArray *objects = [NSArray arrayWithObjects:
@"http://www.google.com",
[NSDate distantFuture],
key,
@"/",
value, nil];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:dict];
NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
[sharedHTTPCookieStorage setCookie:cookie];
}
- (NSString *)getCookie:(NSString *)key {
NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
if ([sharedHTTPCookieStorage cookieAcceptPolicy] != NSHTTPCookieAcceptPolicyAlways) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
}
NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:[NSURL URLWithString:@"http://www.google.com"]];
NSEnumerator *enumerator = [cookies objectEnumerator];
NSHTTPCookie *cookie;
while (cookie = [enumerator nextObject]){
if ([[cookie name] isEqualToString:key]){
return [cookie value];
}
}
return nil;
}
//===================================================================================================
//建立自定義的cookie
//需要把cookie訊息先放到臨時的NSDictionary裡
//然後在利用這個NSDictionary去建例cookie
//NSDictionary鍵值是系統預先定義的常數
//===================================================================================================
NSDictionary * cookieInfo = [NSDictionary dictionaryWithObjectsAndKeys:
@"12345", NSHTTPCookieValue
, @"UserID", NSHTTPCookieName
, @"/", NSHTTPCookiePath
, @"DOMAIN_ROOT", NSHTTPCookieDomain
,nil];
NSHTTPCookie * userCookie = [NSHTTPCookie cookieWithProperties:cookieInfo];
//將cookie放到容器中
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:userCookie];
//建立自定義的cookie
//需要把cookie訊息先放到臨時的NSDictionary裡
//然後在利用這個NSDictionary去建例cookie
//NSDictionary鍵值是系統預先定義的常數
NSDictionary * cookieInfo = [NSDictionary dictionaryWithObjectsAndKeys:
@"12345", NSHTTPCookieValue
, @"UserID", NSHTTPCookieName
, @"/", NSHTTPCookiePath
, @"DOMAIN_ROOT", NSHTTPCookieDomain
,nil];
NSHTTPCookie * userCookie = [NSHTTPCookie cookieWithProperties:cookieInfo];
//將cookie放到容器中
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:userCookie];
//===================================================================================================
//讀取與寫入cookie
//===================================================================================================
-(void)writeCookie{
NSArray *keys = [NSArray arrayWithObjects:
NSHTTPCookieSecure,
NSHTTPCookieDomain,
NSHTTPCookieExpires,
NSHTTPCookieName,
NSHTTPCookiePath,
NSHTTPCookieValue,nil];
NSArray *objects = [NSArray arrayWithObjects:
@"TRUE",
@"www.google.com",
nil, //[[NSDate date] initWithTimeIntervalSinceNow:86500],
@"SPM_auth",
@"/spwebapi/",
@"FeiXiaoLin",nil];
NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSHTTPCookie *cookieA = [NSHTTPCookie cookieWithProperties:dict];
NSHTTPCookieStorage *sharedHTTPCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
[sharedHTTPCookie setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
[sharedHTTPCookie setCookie:cookieA];
NSLog(@"写入后:%@",[[NSHTTPCookieStorage sharedHTTPCookieStorage]cookies]);
[self readCookie];
}
-(void)readCookie {
// NSHTTPCookie *cookieB;
// NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSLog(@"cookies:%@",[[NSHTTPCookieStorage sharedHTTPCookieStorage]cookies]);
}
//===================================================================================================
//從UserDefaults讀出Cookie資料
//===================================================================================================
NSData *cookiesdata = [[NSUserDefaults standardUserDefaults] objectForKey:@"MySavedCookies"];
if([cookiesdata length]) {
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata];
NSHTTPCookie *cookie;
for (cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment