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?
Verwenden Sie in Swift 3 die URLRequest
-Struktur anstelle von NSURLRequest
(ähnlich NSURL
↦ URL
, NSURLSession
↦ URLSession
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")
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")
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()