当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS UIWebView 通过 cookie 完成自动登录实例

iOS UIWebView 通过 cookie 完成自动登录实例

2019年07月24日  | 移动技术网移动技术  | 我要评论

1、相关介绍

ios在uiwebview中获取的cookie的方法:nshttpcookiestorage * ncookies = [nshttpcookiestorage sharedhttpcookiestorage];

再具体获取某个域的cookie:nsarray* cookiesurl = [ncookies cookiesforurl:[nsurl urlwithstring:@"你的url"]];

通过[[nshttpcookiestorage sharedhttpcookiestorage]  setcookie: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!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网