I am having an issue with NSURLSession
& NSURLSessionConfiguration
and I am not sure if it is my code or I have an incorrect understanding of how the framework behaves.
The issue I am facing is that headers I set at the session level are not present in the NSURLSessionTask
created from the session.
Here is a small example:
NSURLSessionConfiguration* config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.HTTPAdditionalHeaders = @{ @"TestHeader" : @"TextHeaderValue" };
NSURLSession* session = [NSURLSession sessionWithConfiguration:config];
NSURLSessionDownloadTask* task = [session downloadTaskWithURL:[NSURL URLWithString:@"http://www.google.com"]];
NSLog(@"%@",task.originalRequest.allHTTPHeaderFields.description);
NSLog(@"%@",task.currentRequest.allHTTPHeaderFields.description);
NSLog(@"%@",session.configuration.HTTPAdditionalHeaders);
The code above outputs:
(null)
(null)
{TestHeader = TextHeaderValue}
From my understanding of the documentation, any task or request created from the session should inherent the HTTPHeaders from the session. Is my understanding correct? If so, can anyone see what I am doing wrong?