je dois envoyer une requête HTTP. Je peux le faire, mais mon API dans Backendless nécessite une application-id et une clé secrète dans l'en-tête de requête HTTP. Pouvez-vous aider comment l'ajouter dans mon code? Merci
let urlString = "https://api.backendless.com/v1/data/Pub"
let session = NSURLSession.sharedSession()
let url = NSURL(string: urlString)!
session.dataTaskWithURL(url){(data: NSData?,response: NSURLResponse?, error: NSError?) -> Void in
if let responseData = data
{
do{
let json = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments)
print(json)
}catch{
print("Could not serialize")
}
}
}.resume()
Swift 4.1 et Swift 3
var request = URLRequest(url: url)
request.setValue("secret-keyValue", forHTTPHeaderField: "secret-key")
URLSession.shared.dataTask(with: request) { data, response, error in }
Swift 2.2
Enveloppez votre NSURL
dans NSMutableRequest
comme ceci:
let request = NSMutableURLRequest(URL: url)
Et utilisez ensuite cette méthode pour ajouter un en-tête à votre objet request
:
request.setValue("secret-keyValue", forHTTPHeaderField: "secret-key")
Et au lieu d'utiliser dataTaskWithURL:
, utilisez la méthode dataTaskWithRequest:
.
session.dataTaskWithRequest(request){
(data: NSData?,response: NSURLResponse?, error: NSError?) -> Void in }
j'ai fait ça.
let urlString = "https://api.backendless.com/v1/data/Pub"
let session = NSURLSession.sharedSession()
let url = NSURL(string: urlString)!
let request = NSMutableURLRequest(URL: url)
request.setValue("application-idValue", forKey: "application-id")
request.setValue("secret-keyValue", forKey: "secret-key")
session.dataTaskWithRequest(request){(data: NSData?,response: NSURLResponse?, error: NSError?) -> Void in
if let responseData = data
{
do{
let json = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments)
print(json)
}catch{
print("Could not serialize")
}
}
}.resume()
}
//MARK: GET Method
func GETDataFromServerUsingHeaderParameters(nameOfApi : NSString, parameters : NSString, withCurrentTask: RequestType, andDelegate : AnyObject) -> Void {
if (currentReachabilityStatus != .notReachable){
//print("Internet Connection Available!")
currentTask = withCurrentTask
let respectedURL = NSString(format: "%@%@", GlobalConstants.KBase_Url,nameOfApi,parameters)
let myRequestUrl = (respectedURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed))!
let url = NSURL(string: myRequestUrl as String)!
let request = NSMutableURLRequest(url: url as URL)
request.setValue("application-idValue", forKey: "application-id")
request.setValue("secret-keyValue", forKey: "secret-key")
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request as URLRequest){ data,response,error in
guard let data = data, error == nil else {
self.showAlertMessage(title: "App Name", message: "Server not responding, please try later")
self.delegate?.internetConnectionFailedIssue()
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
self.delegate?.internetConnectionFailedIssue()
}else{
do {
self.responseDictionary = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! NSDictionary
self.delegate?.responseReceived()
} catch {
}
}
}
task.resume()
}else{
self.showAlertMessage(title: "App Name", message: "No Internet Connection..")
}
}