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;
}
}
}
}
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];
[self.view addSubview:_webView];
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!
[_webView loadRequest:request]; //loadRequest会自动带上设置的cookies!
[self.view addSubview:_webView];
一定要在 [_webView loadRequest:request]; 之前设置cookies!
在登录账号,退出app,在启动app,看是不是自动登录!(还不行:请联系我qq:1246489125)
0 0
- uiwebview通过cookie自动登录
- iOS UIWebView 通过 cookie 完成自动登录
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- iOS UIWebView 通过 cookie 完成自动登录验证
- 通过COOKIE实现自动登录
- 通过COOKIE实现自动登录
- jsp通过Cookie实现自动登录
- jsp通过Cookie实现网站自动登录
- jsp通过Cookie实现自动登录
- jsp通过Cookie实现自动登录
- jsp通过Cookie实现自动登录(转载)
- JSP通过Cookie实现自动登录
- Linux下如何安全退出线程
- if使用注意事项
- JAVA 并发编程-线程同步工具类(十二)
- linux查看jar包内文件命令
- Validate Binary Search Tree
- uiwebview通过cookie自动登录
- java 动态代理实现原理
- HDU 2444 The Accomodation of Students (二分图最大匹配+二分图染色)
- 双重DP实例2:K次购买股票的最大收益
- Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)
- Android动态加载JAR包的实现方法
- 一、SDWebImage分析--库处理流程分析
- leetcode[108]:Convert Sorted Array to Binary Search Tree
- Poj2777(线段树+标记+状态压缩)