HTTP标头在swift中带有NSURLRequest

Jam*_*s H 11 rest http swift swift2

任何人都知道如何在Swift中使用NSURLRequest配置HTTP标头?我在我的服务器上设置了身份验证,它只需要传递给它的令牌,但我在设置标头时遇到问题

我的代码:

func getLatestData() {
        var loggedInUsersNumber:String = SharingManager.sharedInstance.userID
        var usersDataPoint:String = StormDataPoint + loggedInUsersNumber
        activityIND.hidden = false
        activityIND.startAnimating()
        let request = NSURLRequest(URL: NSURL(string: usersDataPoint)!)
        let tokenString = SharingManager.sharedInstance.authToken
        //request.setValue("Token " + tokenString, forKey: "Authorization")
        let urlSession = NSURLSession.sharedSession()
        let task = urlSession.dataTaskWithRequest(request, completionHandler: {
            (data, response, error) -> Void in
            if let error = error {
                print(error)
                return }
Run Code Online (Sandbox Code Playgroud)

我创建了一个属性"tokenString"作为传递到标题的标记,并在我评论它的下一行.request.setvalue - 我弹出它并得到"无法覆盖数据类型"的错误.我的所有搜索都显示了Objective C的帮助.有没有更好的方法来尝试传递标头?

ken*_*ytm 34

在Swift 3中,使用URLRequest结构而不是NSURLRequest(类似地,NSURLURL,NSURLSessionURLSession等).

然后使用添加标题.addValue(_:forHTTPHeaderField:)

// swift 3:
var request = URLRequest(url: URL(string: usersDataPoint)!)
request.addValue("Token \(tokenString)", forHTTPHeaderField: "Authorization")
Run Code Online (Sandbox Code Playgroud)

在Swift 2.2中,如果需要修改它,可以使用.NSMutableURLRequest

// swift 2:
let request = NSMutableURLRequest(URL: NSURL(string: usersDataPoint)!)
request.addValue("Token \(tokenString)", forHTTPHeaderField: "Authorization")
Run Code Online (Sandbox Code Playgroud)


小智 9

您可以创建可变URL请求,然后为字段名称设置值.

let request = NSMutableURLRequest(URL: NSURL(string: yourURLString)!)
request.setValue("\(yourValue)", forHTTPHeaderField: "Header-field-name")
Run Code Online (Sandbox Code Playgroud)