2

I have a lot of problems to set/get cookies.

I use two webView: the first to get the list of user agents, and the last to load the effective view.

I set manually the cookie locally in an array, reading cookiestorage in viewDidLoad method of ViewController, and when i launch my app i receive cookie set in cookiesotrage, but my login is not automatized..Why?


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:

in method applicationDidBecomeActive:

[[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];

in method 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;

in method 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];

I've already read other answers but did not help me.

Community
  • 1
  • 1
ottobit
  • 23
  • 4

0 Answers0