Quelqu'un a une idée sur la façon de configurer des en-têtes HTTP avec NSURLRequest dans Swift? J'ai l'authentification configurée sur mon serveur et il ne nécessite qu'un jeton, mais je ne parviens pas à définir l'en-tête.
mon 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 }
J'ai créé une propriété "tokenString" devant être le jeton à transmettre dans l'en-tête et sur la ligne suivante où je l'ai commentée. request.setvalue - Je l'ai inséré et j'ai obtenu une erreur du type "impossible de remplacer le type de données". Toutes mes recherches montrent l'aide d'Objective C. Existe-t-il un meilleur moyen de passer une en-tête?
Dans Swift 3, utilisez la structure URLRequest
au lieu de NSURLRequest
(de même, NSURL
__ URL
, NSURLSession
URLSession
, etc.).
Ensuite, utilisez addValue(_:forHTTPHeaderField:)
pour ajouter un en-tête.
// Swift 3:
var request = URLRequest(url: URL(string: usersDataPoint)!)
request.addValue("Token \(tokenString)", forHTTPHeaderField: "Authorization")
Dans Swift 2.2, vous utilisez un NSMutableURLRequest
si vous devez le modifier.
// Swift 2:
let request = NSMutableURLRequest(URL: NSURL(string: usersDataPoint)!)
request.addValue("Token \(tokenString)", forHTTPHeaderField: "Authorization")
Vous pouvez créer une demande d'URL mutable, puis définir la valeur du nom du champ.
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()