zoukankan      html  css  js  c++  java
  • 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. }  
     
     
  • 相关阅读:
    感谢燕玲,搞定了客商名称输入即开始检测是否存在
    一步一步学习sqlserverBI多维数据库建立
    sql语句创建文件夹、判断文件夹、创建数据库、表、
    自定义Silverlight DataGrid行列:Defining Columns for a Silverlight DataGrid
    精简版XP SP3安装IIS6,过程坎坷,以此文献给有需要的朋友
    SilverLight 4页面跳转大全(转载)
    如何修改.net framework(转载)
    定义silverlight报表样式Styling a Silverlight Chart
    Silverlight Toolkit DataGrid 单元格内容对齐样式
    一步一步学习sqlserver BI数据仓库设计
  • 原文地址:https://www.cnblogs.com/lingzhiguiji/p/3583955.html
Copyright © 2011-2022 走看看