IOS中UIWebView不會自動存儲、讀取Cookie.
要實現(xiàn)UIWebView的自動登陸,需要手動存儲、讀取Cookie.
1.Appelegate.m中加入以下代碼
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//存儲Cookie,示例加載的URL:http://119.29.69.58:81/index
NSURL * cookieHost = [NSURL URLWithString:@"http://119.29.69.58:81"];
NSHTTPCookie * cookie = [NSHTTPCookie cookieWithProperties:
[NSDictionary dictionaryWithObjectsAndKeys:
[cookieHost host],NSHTTPCookieDomain,
[cookieHost path],NSHTTPCookiePath,
@"COOKIE_NAME",NSHTTPCookieName,
@"COOKIE_VALUE",NSHTTPCookieValue,nil]];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
2.UIWebView加載URL時設(shè)置Header
NSURL * url = [NSURL URLWithString:@"http://119.29.69.58:81/index"];
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
NSArray * cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
[request setHTTPMethod:@"POST"];
[request setHTTPShouldHandleCookies:YES];
[request setAllHTTPHeaderFields:headers];
[self.WebView loadRequest:request];
3.退出登陸時刪除Cookie
//清空Cookie
NSHTTPCookieStorage * myCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie * cookie in [myCookie cookies])
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
//刪除沙盒自動生成的Cookies.binarycookies文件
NSString * path = NSHomeDirectory();
NSString * filePath = [path stringByAppendingPathComponent:@"/Library/Cookies/Cookies.binarycookies"];
NSFileManager * manager = [NSFileManager defaultManager];
[manager removeItemAtPath:filePath error:nil];