IOS - 如何从WebView设置/检索Cookie?

时间:2016-11-29 10:17:37

标签: ios cookies

设置/获取cookie有很多问题。

我使用两个webView:第一个获取用户代理列表,最后一个加载有效视图。

我在一个数组中手动​​设置cookie,在ViewController的viewDidLoad方法中读取cookie存储,当我启动我的应用程序时,我收到了cookiesotrage中设置的cookie,但是我的登录没有自动化。为什么?

的ViewController:

WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
NSMutableURLRequest *nsrequest = [NSMutableURLRequest requestWithURL:nsurl];
[nsrequest setHTTPShouldHandleCookies:YES];
[nsrequest setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:[NSHTTPCookieStorage sharedHTTPCookieStorage].cookies]];
[webView loadRequest:nsrequest];
[self.view addSubview:webView];

的AppDelegate:

方法applicationDidBecomeActive中的

[[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
方法applicationDidFinishLaunchingWithOptions中的

NSMutableArray* cookieDictionary = [[NSUserDefaults standardUserDefaults] valueForKey:@"cookieArray"];
NSLog(@"cookie dictionary found is %@",cookieDictionary);

for (int i=0; i < cookieDictionary.count; i++)
{


    NSLog(@"cookie found is %@",[cookieDictionary objectAtIndex:i]);
    NSMutableDictionary* cookieDictionary1 = [[NSUserDefaults standardUserDefaults] valueForKey:[cookieDictionary objectAtIndex:i]];
    NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieDictionary1];
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}

return YES;
方法viewDidLoad中的

NSMutableArray *cookieArray = [[NSMutableArray alloc] init];
for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
    [cookieArray addObject:cookie.name];
    NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
    [cookieProperties setObject:cookie.name forKey:NSHTTPCookieName];
    [cookieProperties setObject:cookie.value forKey:NSHTTPCookieValue];
    [cookieProperties setObject:cookie.domain forKey:NSHTTPCookieDomain];
    [cookieProperties setObject:cookie.path forKey:NSHTTPCookiePath];
    [cookieProperties setObject:[NSNumber numberWithInt:cookie.version] forKey:NSHTTPCookieVersion];

    [cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];

    [[NSUserDefaults standardUserDefaults] setValue:cookieProperties forKey:cookie.name];
    [[NSUserDefaults standardUserDefaults] synchronize];

}

[[NSUserDefaults standardUserDefaults] setValue:cookieArray forKey:@"cookieArray"];
[[NSUserDefaults standardUserDefaults] synchronize];

我已经阅读了其他答案,但没有帮助我。

0 个答案:

没有答案