作者:手机电视2602907765 | 来源:互联网 | 2023-07-28 09:30
本文为大家介绍了iOS开发ASIHTTPRequest中COOKIE的使用的内容,其中包括持久化COOKIE,自己处理COOKIE等等内容,希望对大家有所帮助。
持久化COOKIE
ASIHTTPRequest允许你使用全局存储来和所有使用CFNetwork或者NSURLRequest接口的程序共享COOKIE。
如果设置useCOOKIEPersistence为YES(默认值),COOKIE会被存储在共享的 NSHTTPCOOKIEStorage 容器中,并且会自动被其他request重用。值得一提的是,ASIHTTPRequest会向服务器发送其他程序创建的COOKIE(如果这些COOKIE对特定request有效的话)。
你可以清空session期间创建的所有COOKIE:
- [ASIHTTPRequest setSessionCOOKIEs:nil];
这里的‘session COOKIEs’指的是一个session中创建的所有COOKIE,而非没有过期时间的COOKIE(即通常所指的会话COOKIE,这种COOKIE会在程序结束时被清除)。
另外,有个方便的函数 clearSession可以清除session期间产生的所有的COOKIE和缓存的授权数据。
自己处理COOKIE
如果你愿意,你大可以关闭useCOOKIEPersistence,自己来管理某个request的一系列COOKIE:
-
- NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease];
- [properties setValue:[@"Test Value" encodedCOOKIEValue] forKey:NSHTTPCOOKIEValue];
- [properties setValue:@"ASIHTTPRequestTestCOOKIE" forKey:NSHTTPCOOKIEName];
- [properties setValue:@".dreamingwish.com" forKey:NSHTTPCOOKIEDomain];
- [properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCOOKIEExpires];
- [properties setValue:@"/asi-http-request/tests" forKey:NSHTTPCOOKIEPath];
- NSHTTPCOOKIE *COOKIE = [[[NSHTTPCOOKIE alloc] initWithProperties:properties] autorelease];
-
-
- url = [NSURL URLWithString:@"http://www.dreamingwish.com/"];
- request = [ASIHTTPRequest requestWithURL:url];
- [request setUseCOOKIEPersistence:NO];
- [request setRequestCOOKIEs:[NSMutableArray arrayWithObject:COOKIE]];
- [request startSynchronous];
-
-
- NSLog(@"%@",[request responseString]);