【问题标题】:NSURLSessionConfiguration HTTPAdditionalHeaders not setNSURLSessionConfiguration HTTPAdditionalHeaders 未设置
【发布时间】:2014-09-05 06:27:05
【问题描述】:

授权标头在NSURLSessionConfiguration 中设置,但它未附加到NSURLSessionDataTask。这是Foundation framework 中的错误吗?

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
[configuration setHTTPAdditionalHeaders:@{@"Authorization":@"123"}];

// Initialize session with NSURLSessionConfiguration
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
NSURLSessionDataTask *sessionTask = [session dataTaskWithRequest:request
                                        completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
}];

[sessionTask resume];

【问题讨论】:

  • 你有什么解决办法吗?
  • 这对我来说很顺利(在 iOS 15 上)

标签: ios nsurlrequest foundation nsurlsession nsurlsessionconfiguration


【解决方案1】:

我在 Swift 中尝试过,它可以工作

    var sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
    var xHTTPAdditionalHeaders: [NSObject : AnyObject] = ["X-test":"taly"]
    sessionConfig.HTTPAdditionalHeaders = xHTTPAdditionalHeaders
    let session = NSURLSession(configuration: sessionConfig)

    let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in

【讨论】:

  • 适用于X-test,但不适用于Authorization。请参阅 Dongjin Suh 的回答。
  • config.httpAdditionalHeaders = [ "authorization": "token abcd"] 为我工作顺利(iOS 15)。
【解决方案2】:

在 NSURLSessionConfigurationdocument

NSURLSession 对象旨在处理 适合您的 HTTP 协议。因此,您不应修改 以下标题

授权

连接

主机

WWW-认证

【讨论】:

  • 这个文档在 2021 年仍然存在,但是说明 re: Authorization field 似乎无关紧要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多