UIWebView中cookie的问题

因为使用UIWebView必不可少的肯定会用到cookie,在同一个应用里面,会在沙盒的lib文件夹下面生成一个cookie的文件夹,这样可以实现cookie的通用了。。。。

然后如果觉得这样还不爽,想自己弄个cookie,可以使用ASI这个强大的第三方库!

ASIHTTPRequest-Cookie的使用   

 
 
持久化cookie

ASIHTTPRequest允许你使用全局存储来和所有使用CFNetwork或者NSURLRequest接口的程序共享cookie。

如果设置useCookiePersistence为YES(默认值),cookie会被存储在共享的 NSHTTPCookieStorage 容器中,并且会自动被其他request重用。值得一提的是,ASIHTTPRequest会向服务器发送其他程序创建的cookie(如果这些cookie对特定request有效的话)。

你可以清空session期间创建的所有cookie:
1
    
[ASIHTTPRequest setSessionCookies:nil];

这里的‘session cookies’指的是一个session中创建的所有cookie,而非没有过期时间的cookie(即通常所指的会话cookie,这种cookie会在程序结束时被清除)。

另外,有个方便的函数 clearSession可以清除session期间产生的所有的cookie和缓存的授权数据。 


自己处理cookie

如果你愿意,你大可以关闭useCookiePersistence,自己来管理某个request的一系列cookie:
//创建一个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会返回名为‘ASIHTTPRequestTestCookie‘的cookie的值
url = [NSURL URLWithString:@"http://www.dreamingwish.com/"];
request = [ASIHTTPRequest requestWithURL:url];
[request setUseCookiePersistence:NO];
[request setRequestCookies:[NSMutableArray arrayWithObject:cookie]];
[request startSynchronous];

//将会打印: I have ‘Test Value‘ as the value of ‘ASIHTTPRequestTestCookie‘
NSLog(@"%@",[request responseString]); 
————————————————————————————————————————————————————————————————
还是不爽的话,那就看下面的方法吧
 
 

项目中,需要在打开3g网页时,通过cookie传递一些信息。

 

实现代码如下:

[html] view plaincopy
 
  1. NSURL *url = [NSURL URLWithString:_urlstr];  
  2.     //NSURLRequest *request = [NSURLRequest requestWithURL:url];  
  3.     NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60];  
  4.     [self.myWeb loadRequest:request];  

之前,设置或者删除cookie。

 

[html] view plaincopy
 
  1. //////////////////////////////////////////////////////  
  2. //设置cookie  
  3. - (void)setCookie{  
  4.       
  5.        
  6.     NSMutableDictionary *cookiePropertiesUser = [NSMutableDictionary dictionary];  
  7.     [cookiePropertiesUser setObject:@"cookie_user" forKey:NSHTTPCookieName];  
  8.     [cookiePropertiesUser setObject:uid forKey:NSHTTPCookieValue];  
  9.     [cookiePropertiesUser setObject:@"xxx.xxx.com" forKey:NSHTTPCookieDomain];  
  10.     [cookiePropertiesUser setObject:@"/" forKey:NSHTTPCookiePath];  
  11.     [cookiePropertiesUser setObject:@"0" forKey:NSHTTPCookieVersion];  
  12.       
  13.     // set expiration to one month from now or any NSDate of your choosing  
  14.     // this makes the cookie sessionless and it will persist across web sessions and app launches  
  15.     /// if you want the cookie to be destroyed when your app exits, don‘t set this  
  16.     [cookiePropertiesUser setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];  
  17.       
  18.     NSHTTPCookie *cookieuser = [NSHTTPCookie cookieWithProperties:cookiePropertiesUser];  
  19.     [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookieuser];  
  20. }  
  21.   
  22. //清除cookie  
  23. - (void)deleteCookie{  
  24.     NSHTTPCookie *cookie;  
  25.       
  26.     NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];  
  27.       
  28.     NSArray *cookieAry = [cookieJar cookiesForURL: [NSURL URLWithString: _urlstr]];  
  29.       
  30.     for (cookie in cookieAry) {  
  31.           
  32.         [cookieJar deleteCookie: cookie];  
  33.           
  34.     }  
  35. }  
 
 

UIWebView中cookie的问题,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。