swift - 如何将 Alamofire 与自定义 header 一起使用

标签 swift afnetworking alamofire

我刚刚开始了解 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]

更多信息在这里:https://github.com/Alamofire/Alamofire/issues/111

关于swift - 如何将 Alamofire 与自定义 header 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25143938/

相关文章:

objective-c - 如何在 Swift 中更改覆盖函数返回类型

ios - AlamoFire 发送 Nil

ios - PromiseKit 没有回调/解除分配? (阿拉莫菲尔)

ios - 基于日历的本地通知不起作用 - Swift 3

arrays - 除非显式引用一个字典枚举键,否则编译器会报错

ios - 将 UIImageView 拖放到 subview 中 - Swift 3

ios - AFNetworking:具有子域的 AFHTTPClient

iphone - 将当前位置从 iPhone 发布到 Rails

ios - AFNetworking 下载队列

ios - 我如何在 alamofire post 请求中发送 JSON 变量作为参数