在使用UIWebView访问网站时,经常遇到的一个问题是需要登录。比如访问新浪微博,或者访问某个个人账号,但是需要直接访问url,却会被重定向到登录页进行登录,如果要避免登陆一般做法是在url地址里面拼接相关登陆信息这种做法虽然可行但是不安全相对接下来的方法也麻烦。
那么真正的浏览器是如何做到的直接登录?一般来说,答案都是cookies。在你第一次登录时,网站设置了cookie,浏览器保存这些携带了登录信息的cookies,以后就可以直接登录。
所以我们要做的就是在url request中带上cookies。
我看网上很多的做法是自己设置一个cookie值,个人感觉虽然这种方式能办到预期的效果,但是感觉很麻烦,要人为设置一堆参数。下面来介绍更加简单的办法。
NSURL *url = [NSURL URLWithString:@"需要跳转的URL"];
NSMutableURLRequest *requst = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0];
//这个方法获取已经登录的cookie信息
NSArray *cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies;
NSDictionary *requestHeader = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
[requst setAllHTTPHeaderFields:requestHeader];
大功告成,这种方式是不是更简单?仅需要几行代码搞定。