NSURLSession& NSURLSessionConfig - 丢弃配置标头

时间:2014-10-17 18:26:45

标签: ios nsurlsession nsurlsessiondownloadtask nsurlsessionconfiguration

我遇到NSURLSession&问题NSURLSessionConfiguration我不确定这是否是我的代码,或者我对框架的行为方式有不正确的理解。

我面临的问题是我在会话级别设置的标头不存在于会话中创建的NSURLSessionTask中。

这是一个小例子:

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);

上面的代码输出:

(null)
(null)
{TestHeader = TextHeaderValue}

根据我对documentation的理解,会话中创建的任何任务或请求都应该是会话中HTTPHeaders的固有内容。我的理解是否正确?如果是这样,谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:2)

根据Charles Proxy发送标题:
“TestHeader TextHeaderValue”。

这似乎是NSURLSessionConfigurationNSURLSession中标题设置方式的显示问题。也许不应该假设在使用allHTTPHeaderFields时设置了NSURLSession属性。