我在使用 NSURLSession
和 NSURLSessionConfiguration
时遇到问题,我不确定这是我的代码还是我对框架的行为有错误的理解。
我面临的问题是我在 session 级别设置的 header 不存在于从 session 创建的 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 的理解,从 session 创建的任何任务或请求都应该从 session 中继承 HTTPHeaders。我的理解正确吗?如果是这样,谁能看出我做错了什么?
最佳答案
正在根据 Charles Proxy 发送 header :
“TestHeader TextHeaderValue”。
这似乎是 NSURLSessionConfiguration
和 NSURLSession
中 header 设置方式的显示问题。也许人们不应该假设在使用 NSURLSession
时设置了 allHTTPHeaderFields
属性。
关于ios - NSURLSession 和 NSURLSessionConfig - 丢弃配置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26431208/