iOS uiwebview通过cookie自动登录

释放双眼,带上耳机,听听看~!

这两天弄uiwebview通过通过cookie自动登录,搞的昏头转向,各种查资料,发帖子,到q群里面问,终于弄出来,在此记录下来,以备以后有用。

ios中获取cookies的方法:NSHTTPCookieStorage *nCookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];

再具体获取某个域的cookies:NSArray *cookiesURL = [nCookies cookiesForURL:[NSURL URLWithString:yourURL]];

把yourURL换成你的网址就能获取到cookies了。

 

保存cookies:

网上说可以通过 [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie: cookies]来保存cookies,但是我发现,即使这样设置之后再app退出之后,该cookies还是丢失了(后来解决了:其实是cookies过期的问题,见我的博客”ios
app退出后cookies丢失的解决方法
“:http://blog.csdn.net/gx_wqm/article/details/47086181),所以就在程序进入后台之后把改cookies通过NSUserDefaults保存起来:

-(void)saveSessID{
    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *nCookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray *cookiesURL = [nCookies cookiesForURL:[NSURL URLWithString:Your_URL]];
    
    for (id c in cookiesURL)
    {
        if ([c isKindOfClass:[NSHTTPCookie class]])
        {
            cookie=(NSHTTPCookie *)c;
            if ([cookie.name isEqualToString:@"PHPSESSID"]) {
                NSNumber *sessionOnly = [NSNumber numberWithBool:cookie.sessionOnly];
                NSNumber *isSecure = [NSNumber numberWithBool:cookie.isSecure];
                NSArray *cookies = [NSArray arrayWithObjects:cookie.name, cookie.value, sessionOnly, cookie.domain, cookie.path, isSecure, nil];
                [[NSUserDefaults standardUserDefaults] setObject:cookies forKey:@"abcdef"];
                break;
            }
        }
    }
} 

 

PHPSESSID:具体是不是这个,问一下做后台的。

abcdef:随便取,只要不和已存在的一样就行了。

 

获取cookies:

程序起来之后,uiwebview加载url之前获取保存好的cookies,并设置cookies,

 

NSArray *cookies =[[NSUserDefaults standardUserDefaults]  objectForKey:@"abcdef"];
    
    NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
    [cookieProperties setObject:[cookies objectAtIndex:0] forKey:NSHTTPCookieName];
    [cookieProperties setObject:[cookies objectAtIndex:1] forKey:NSHTTPCookieValue];
    [cookieProperties setObject:[cookies objectAtIndex:3] forKey:NSHTTPCookieDomain];
    [cookieProperties setObject:[cookies objectAtIndex:4] forKey:NSHTTPCookiePath];
    
    NSHTTPCookie *cookieuser = [NSHTTPCookie cookieWithProperties:cookieProperties];
    [[NSHTTPCookieStorage sharedHTTPCookieStorage]  setCookie:cookieuser];


    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:yourUrl]];
    [_webView loadRequest:request];  //loadRequest会自动带上设置的cookies!


    [self.view addSubview:_webView]; 
一定要在 [_webView loadRequest:request]; 之前设置cookies!
在登录账号,退出app,在启动app,看是不是自动登录!

 

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索