Search code examples
iosobjective-ccookiesnsurlsessionnsurlsessionconfiguration

Can I update cookies in the configuration of a NSURLSession after its creation?


Can I update cookies in the configuration of a NSURLSession after the creation of the session?

I use this code to update the cookies but it doesn't seem to work.

self.session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
self.session.configuration.HTTPShouldSetCookies = NO;
self.session.configuration.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;
self.session.configuration.HTTPAdditionalHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:cookiesArray];

Thanks,


Solution

  • No you can't, you have to create the configuration before creating the session, from the Apple docs:

    It is important to configure your NSURLSessionConfiguration object appropriately before using it to initialize a session object. Session objects make a copy of the configuration settings you provide and use those settings to configure the session. Once configured, the session object ignores any changes you make to the NSURLSessionConfiguration object. If you need to modify your transfer policies, you must update the session configuration object and use it to create a new NSURLSession object.

    https://developer.apple.com/library/IOs/documentation/Foundation/Reference/NSURLSessionConfiguration_class/index.html

    e.g.

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    configuration.HTTPShouldSetCookies = NO;
    configuration.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;
    configuration.HTTPAdditionalHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:cookiesArray];
    
    NSURLSession *session = [NSURLSession initWithSessionConfiguration:configuration];