基於Swift的iOS應用程序開發:使用URLSession向服務器發送請求

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()
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章