iOS UIWebView 通过 cookie 完成自动登录

1、相关介绍

iOS在UIWebView中获取的cookie的方法:NSHTTPCookieStorage * nCookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];

再具体获取某个域的cookieNSArray* cookiesURL = [nCookies cookiesForURL:[NSURL URLWithString:@"你的URL"]];

通过[[NSHTTPCookieStorage sharedHTTPCookieStoragesetCookie:userCookie]方法将 cookies来保存起来,但是这样虽然可以保存cookies但是你应用退出之后还是会丢失(其实是cookies过期的问题),做好的方法是把cookies放到NSUserDefaults保存起来.

2、实现

1.在UIWebView的代理方法中实现获取cookies并将cookies放到NSUserDefaults保存起来:- (void)webViewDidFinishLoad:(UIWebView*)webView中写入

- (void)webViewDidFinishLoad:(UIWebView*)webView{

   

    NSArray *nCookies = [[NSHTTPCookieStoragesharedHTTPCookieStorage] cookies];

    for (NSHTTPCookie *cookie in nCookies){

        if ([cookie isKindOfClass:[NSHTTPCookie class]]){

           

            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:@"cookies"];

                break;

           }

       }

   }

}


2.获取cookies:运行之后,UIWebView加载url之前获取保存好的cookies,并设置cookies

NSArray *cookies =[[NSUserDefaults standardUserDefaults objectForKey:@"cookies"];

    if (cookies.count >0) {

        NSMutableDictionary *cookieProperties = [NSMutableDictionarydictionary];

        [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 = [NSHTTPCookiecookieWithProperties:cookieProperties];

        [[NSHTTPCookieStorage sharedHTTPCookieStorage setCookie:cookieuser];

    }

注意:要在[self.webView loadRequest:req];之前设置获取cookies!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值