uiwebview通过cookie自动登录

来源:互联网 发布:linux命令date格式化 编辑:程序博客网 时间:2024/05/19 17:55

这两天弄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,看是不是自动登录!(还不行:请联系我qq:1246489125)

0 0
原创粉丝点击