我刚刚开始了解 Mattt 出色的新 Alamofire swift 网络库,我不太确定如何将它与自定义 header 一起使用。
我试图从 AFNetworking 转换到 Alamofire 的代码是这样的:
let request = NSMutableURLRequest(URL: url)
request.setValue(authorizationToken, forHTTPHeaderField:"Authorization")
最佳答案
根据官方文档,不建议修改session配置:
This is not recommended for Authorization or Content-Type headers. Instead, use URLRequestConvertible and ParameterEncoding, respectively.
因此,使用 URLRequestConvertible 进行授权的示例如下:
enum Router: URLRequestConvertible {
static let baseUrlString = "some url string"
case Get(query: String)
var URLRequest: NSMutableURLRequest {
let (path: String, parameters: [String: AnyObject]?) = {
switch self {
case .Get(let query):
return ("/get", ["q": query])
}
}()
let URL = NSURL(string: Router.baseUrlString)!
let URLRequest = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(path))
// set header fields
URLRequest.setValue("a", forHTTPHeaderField: "Authorization")
let encoding = Alamofire.ParameterEncoding.URL
return encoding.encode(URLRequest, parameters: parameters).0
}
}
当你想提出请求时:
Manager.sharedInstance.request(Router.Get(query: "test"))
有关 URLRequestConvertible 的更多信息:https://github.com/Alamofire/Alamofire#urlrequestconvertible
旧答案
从 Alamofire v1.0 开始,Pers 答案不再有效。在新版本中,应将附加 header 添加到 NSURLSessionConfiguration
HTTPAdditionalHeaders
属性中
Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = ["Authorization": authorizationToken]
关于swift - 如何将 Alamofire 与自定义 header 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25143938/