在Swift 3中使用urlsession在http标头中发送承载令牌的问题

Vai*_*han 1 json http-headers ios swift3 urlsession

我正在使用urlsession在标头中发送承载令牌,但是我总是得到未经授权的结果。我已经看到服务器日志。我将身体放在那儿但没有头。

    let key = UserDefaults.standard.object(forKey: "loginKey") as! String
        print(key)
        let url = NSURL(string: baseurl+"***")

        let request = NSMutableURLRequest(url: url! as URL)

        request.httpMethod = "GET"

        request.addValue("Bearer " + key, forHTTPHeaderField: "Authorization")
        let task = URLSession.shared.dataTask(with: request as URLRequest) 
{(data,response,error) -> Void in

        if error != nil
        {
          print(error?.localizedDescription as Any)
                        return
        }

       do 
       {
          let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary

           print(json)
        }
      catch let error as NSError 
      {
         print(error.localizedDescription)
      }
    }
    task.resume()
Run Code Online (Sandbox Code Playgroud)

我也尝试过 request.setValue("Bearer " + key, forHTTPHeaderField: "Authorization")

KKR*_*cks 5

尝试这个 :

     var sessionConfig = URLSessionConfiguration.default
      var authValue: String? = "Bearer \(key)"
     sessionConfig.httpAdditionalHeaders = ["Authorization": authValue ?? <#default value#>]
     var session = URLSession(configuration: sessionConfig, delegate: self as? URLSessionDelegate, delegateQueue: nil)
Run Code Online (Sandbox Code Playgroud)

  • 还有一个问题,您的解决方案不适用于 GET 方法 (4认同)