我創建了一個功能一個項目,以正確的參數,你可以POST,PUT和獲得
private func fetchData(feed:String,token:String? = nil,parameters:[String:AnyObject]? = nil,method:String? = nil, onCompletion:(success:Bool,data:NSDictionary?)->Void){
dispatch_async(dispatch_get_main_queue()) {
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
let url = NSURL(string: feed)
if let unwrapped_url = NSURL(string: feed){
let request = NSMutableURLRequest(URL: unwrapped_url)
if let tk = token {
let authValue = "Token \(tk)"
request.setValue(authValue, forHTTPHeaderField: "Authorization")
}
if let parm = parameters{
if let data = NSJSONSerialization.dataWithJSONObject(parm, options:NSJSONWritingOptions(0), error:nil) as NSData? {
//println(NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(0), error: nil))
request.HTTPBody = data
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("\(data.length)", forHTTPHeaderField: "Content-Length")
}
}
if let unwrapped_method = method {
request.HTTPMethod = unwrapped_method
}
let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
sessionConfiguration.timeoutIntervalForRequest = 15.0
let session = NSURLSession(configuration: sessionConfiguration)
let taskGetCategories = session.dataTaskWithRequest(request){ (responseData, response, error) -> Void in
let statusCode = (response as NSHTTPURLResponse?)?.statusCode
//println("Status Code: \(statusCode), error: \(error)")
if error != nil || (statusCode != 200 && statusCode != 201 && statusCode != 202){
onCompletion(success: false, data:nil)
}
else {
var e: NSError?
if let dictionary = NSJSONSerialization.JSONObjectWithData(responseData, options: .MutableContainers | .AllowFragments, error: &e) as? NSDictionary{
onCompletion(success:true,data:dictionary)
}
else{
onCompletion(success: false, data:nil)
}
}
}
UIApplication.sharedApplication().networkActivityIndicatorVisible = false
taskGetCategories.resume()
}
}
}
該如何使用功能:
fetchData(feed,token: Constants.token(), parameters: params, method: "POST", onCompletion: { (success, data) -> Void in
if success { //Code after completion} })
- feed - >這是到服務器的鏈接
- 令牌(可選) - >某些請求需要令牌用於安全目的
- 參數(可選) - >這些是您可以傳遞給服務器的所有參數。 (這是一個詞典btw)
- 方法(可選) - >在這裏你可以選擇你想要的請求類型(「GET」,「POST」,「PUT」)
- 完成關閉 - >當請求完成時即將執行的函數。在閉包中,你會得到兩個參數:「成功」是一個bool,它表示請求是否成功並顯示「數據」。這是一個包含所有響應數據的字典(可能爲零)
希望我幫了忙。對不起,我的英語