wake-up-neo.net

HTTP-Header mit NSURLRequest in kürzester Zeit

Hat jemand eine Idee, wie man HTTP-Header mit NSURLRequest in Swift konfiguriert? Ich habe die Authentifizierung auf meinem Server eingerichtet und es muss nur ein Token an ihn übergeben werden, aber ich habe Probleme beim Festlegen des Headers

mein code: 

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 }

Ich habe eine Eigenschaft "tokenString" erstellt, um das Token in die Kopfzeile und in die nächste Zeile zu geben, in der ich es kommentiert habe. request.setvalue - Ich habe es eingeblendet und erhalte eine Fehlermeldung in der Art "Datentyp kann nicht überschrieben werden". Alle meine Suchanfragen zeigen die Ziel-C-Hilfe. Gibt es eine bessere Möglichkeit, einen Header zu übergeben?

9
James H

Verwenden Sie in Swift 3 die URLRequest-Struktur anstelle von NSURLRequest (ähnlich NSURLURL, NSURLSessionURLSession usw.). 

Verwenden Sie dann addValue(_:forHTTPHeaderField:) , um einen Header hinzuzufügen.

// Swift 3:
var request = URLRequest(url: URL(string: usersDataPoint)!)
request.addValue("Token \(tokenString)", forHTTPHeaderField: "Authorization")

In Swift 2.2 verwenden Sie einen NSMutableURLRequest , wenn Sie ihn ändern müssen.

// Swift 2:
let request = NSMutableURLRequest(URL: NSURL(string: usersDataPoint)!)
request.addValue("Token \(tokenString)", forHTTPHeaderField: "Authorization")
31
kennytm

Sie können eine Anforderung für veränderliche URL erstellen und dann den Wert für den Feldnamen festlegen.

let request = NSMutableURLRequest(URL: NSURL(string: yourURLString)!)
request.setValue("\(yourValue)", forHTTPHeaderField: "Header-field-name")
9
iThanh

Swift3 größeres Beispiel

var req: URLRequest = /* create requets */
req.setValue("Bearer Y3GzLG2x6wSXihmUGhwGFw", forHTTPHeaderField: "Authorization")
req.timeoutInterval = 10
let task = URLSession.shared.dataTask(with: req, completionHandler: { (data, response, error) in
    print("completionHandler invoked")
})
task.resume()
0
neoneye