所以我有一个应用程序,它经常向我们的API上的各个端点发出请求,并且每个请求几乎都有与之一起发送的相同自定义标头。我想知道是否有一种方法可以使用NSURLSessionConfiguration全局设置自定义标头,如果是这样的话...... Swift中的语法是什么,我会把它放在哪里? AppDelegate的?我做了一些搜索,似乎无法找到一个很好的例子。这是一种不好的做法吗?不可行吗?
编辑:
我正在使用Alamofire进行请求/响应,因此我需要一些全局设置它们,以便该库(以及碰巧使用NSURLSession的其他库)将默认发送标头。
答案 0 :(得分:2)
我们已将此记录在README。
中var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
defaultHeaders["DNT"] = "1 (Do Not Track Enabled)"
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = defaultHeaders
let manager = Alamofire.Manager(configuration: configuration)
然后您需要使用新的manager
而不是全局Alamofire
单身。
manager.request(.GET, "https://httpbin.org/get")
.responseJSON { _, _, result in
debugPrint(result)
}
这会将DNT
标头附加到通过此manager
实例发送的每个请求。
每个
Manager
实例都有自己的内部NSURLSession
,它也有自己的配置。因此,此覆盖仅适用于此Manager
实例。如果您在其他Manager
实例上需要这些标头,则必须以相同的方式进行设置。