Sto tentando di utilizzare le NSURLSessions temporanee per fornire una gestione dei cookie separata per diverse attività all'interno della mia app. Queste attività non sono direttamente collegate a un'interfaccia utente. Problema: qualunque cosa io faccia, la cookieAcceptPolicy dell'effettuario NSHTTPCookieStorage rimane NSHTTPCookieAcceptPolicyNever.Come impostare cookieAcceptPolicy per NSURLSession temporaneo
Ecco il mio codice:
// use a pure in-memory configuration with its own private cache, cookie, and credential store
__block NSURLSessionConfiguration* config = [NSURLSessionConfiguration ephemeralSessionConfiguration];
// do anything to accept all cookies
config.HTTPShouldSetCookies = YES;
config.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;
config.HTTPCookieStorage.cookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;
__block NSURLSession* session = [NSURLSession sessionWithConfiguration:config];
NSURLSessionDataTask* task = [session dataTaskWithURL:[NSURL URLWithString:@"https://test.cgmlife.com/Catalogs"]
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPCookieStorage* cookies = session.configuration.HTTPCookieStorage;
NSLog(@"%@", cookies);
NSLog(@"%lu", cookies.cookieAcceptPolicy);
}];
[task resume];
L'uscita dal NSLog è sempre:
Ephemeral <NSHTTPCookieStorage cookies count:0>
1
dove 1 è il valore per NSHTTPCookieAcceptPolicyNever (previsto 0 per NSHTTPCookieAcceptPolicyAlways). Le intestazioni nella risposta sono lì.
Cosa posso fare per ricordare a NSHTTPCookieStorage i miei cookie mentre la sessione è attiva? Non ho bisogno e non voglio alcuna persistenza. Voglio solo tenere i cookie in memoria in modo che vengano riutilizzati per ulteriori richieste nella stessa sessione.