【问题标题】:Adding headers to Alamofire request (with ephemeral session)向 Alamofire 请求添加标头(带有临时会话)
【发布时间】:2015-11-09 01:06:18
【问题描述】:

我正在尝试将标头添加到 AlamoFire 请求中。

当我使用以下代码时效果很好:

let manager = Manager.sharedInstance
manager.session.configuration.HTTPAdditionalHeaders = [
    "Authorization": "Bearer \(accessToken!)" ]

但是,当我需要使用临时会话时,它不适用于以下代码。

let configuration = NSURLSessionConfiguration.ephemeralSessionConfiguration()
let manager = Manager(configuration: configuration)
manager.session.configuration.HTTPAdditionalHeaders = [
    "Authorization": "Bearer \(accessToken!)" ]

我错过了什么吗?

提前致谢,

【问题讨论】:

    标签: ios swift http-headers nsurlrequest alamofire


    【解决方案1】:

    您必须确保保留您的经理,您可以通过将其设置为存储属性来做到这一点。您可以在这里找到更多信息:https://github.com/Alamofire/Alamofire/issues/157

    let customManager: Manager?
    
    init() {
        let configuration = NSURLSessionConfiguration.ephemeralSessionConfiguration()
        self.customManager = Manager(configuration: configuration)
        self.customManager!.session.configuration.HTTPAdditionalHeaders = [
        "Authorization": "Bearer \(accessToken!)" ]
    }
    
    
    func yourFunc() {
        let URL = NSURL(string: identityURL)
        var mutableURLRequest = NSMutableURLRequest(URL: URL!)
    
        let request = self.customManager!.request(mutableURLRequest)
    
        request.responseJSON {
            (request, response, data, error) in
            if let response = response {
                 // Your code
            }
    }
    

    【讨论】:

      【解决方案2】:
       func HTTPHeader(param : NSDictionary)
          {
              var username: AnyObject? = param[kAPIUsername]
              var password: AnyObject? = param[kAPIPassword]
      
              var str = "\(username!):\(password!)"
      
              let base64Encoded = BaseVC.sharedInstance.encodeStringToBase64(str)
      
              Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = [
                  "Authorization": "Basic \(base64Encoded)",
              ]
          }
      
      
        func encodeStringToBase64(str : String) -> String
          {
              // UTF 8 str from original
              // NSData! type returned (optional)
              let utf8str = str.dataUsingEncoding(NSUTF8StringEncoding)
      
              // Base64 encode UTF 8 string
              // fromRaw(0) is equivalent to objc 'base64EncodedStringWithOptions:0'
              // Notice the unwrapping given the NSData! optional
              // NSString! returned (optional)
              let base64Encoded = utf8str!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
      
              return base64Encoded;
          }
      
      
       func GET()
          {
              HTTPHeader(param, token: token)
      
              request(.GET, API URL , encoding: .JSON)
                  .progress { bytesWritten, totalBytesWritten, totalBytesExpectedToWrite in
                      //progress
      
                  }
                  .responseJSON {
      
                      (request, response, json, error) -> Void in
      
                  //get response here 
              }
          }
      

      可能对链接有帮助:how to use Alamofire with custom headers

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 2020-10-23
        • 2015-03-22
        相关资源
        最近更新 更多