我需要发送HTTP请求,我可以这样做,但我在Backendless中的API需要HTTP请求标头中的application-id和secret-key。你能帮忙把它添加到我的代码中吗?感谢
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()
答案 0 :(得分:21)
Swift 4.1和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
将NSURL
包裹进NSMutableRequest
,如下所示:
let request = NSMutableURLRequest(URL: url)
然后使用此方法将标头添加到request
对象:
request.setValue("secret-keyValue", forHTTPHeaderField: "secret-key")
而不是使用dataTaskWithURL:
使用dataTaskWithRequest:
方法。
session.dataTaskWithRequest(request){
(data: NSData?,response: NSURLResponse?, error: NSError?) -> Void in }
答案 1 :(得分:2)
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()
}
答案 2 :(得分:1)
//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..")
}
}