1、創建URLSession對象
let session:URLSession = URLSession.shared
2、定義請求地址和請求參數let url:URL = URL(string:"在這裏填寫服務器地址")!
let postData:String = "在這裏填寫請求參數"
3、根據請求地址和參數,定義request對象
let request:NSMutableURLRequest = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = postData.data(using: String.Encoding.utf8)
需要注意的是,以本例這樣的形式所發送的參數,服務器端會接收到一整段字符串,然後需要自行解析這個字符串,從而拿到所需的參數。這種形式非常適合傳遞格式化的參數,例如xml或者json格式的字符串參數4、從URLSession對象建立請求任務
let task = session.dataTask(with: request as URLRequest) { (<#Data?#>, <#URLResponse?#>, <#Error?#>) in
//在這裏編寫響應方法的內容
//處理來自服務器端的響應參數
}
5、執行請求任務,完成請求發送
task.resume()
以上就完成了所有的請求發送步驟。其實蘋果官方是更推薦使用URLSession來向服務器發送請求的。
以下是我封裝的一個完整的方法:
/**
* 以post方式向服務器端的webservice接口發起http請求,並將來自服務器端的響應數據傳遞到指定的回調函數中
* 使用NSURLSession類來進行請求操作
*/
func requestToServerByPostWithNSURLSession(_ postData:String,webserviceUrl:String,completionHandler:@escaping (_ data:Data?,_ response:URLResponse?,_ error:Error?) -> Void){
print("url:"+webserviceUrl)
print("參數:"+postData)
/*
* 創建URLSession對象
*/
let session:URLSession = URLSession.shared
/*
* 定義請求地址
*/
let url:URL = URL(string:webserviceUrl)!
/*
* 定義request對象,並傳遞請求參數
*/
let request:NSMutableURLRequest = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = postData.data(using: String.Encoding.utf8)
/*
* 建立請求任務
*/
let task = session.dataTask(with: request as URLRequest,completionHandler:completionHandler)
/*
* 啓動任務,執行請求
*/
task.resume()
}