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

先定義好你需要發送請求的地址,以及參數:

var urlStr:String = “這是你的服務器請求地址”
var requestXml:String = “這裏是你的請求參數”

使用NSURL類來創建服務器地址對象:

let url:NSURL = NSURL(string:urlStr)!

創建NSMutableURLRequest對象:

let request : NSMutableURLRequest = NSMutableURLRequest(URL: url)

設置請求方式:

request.HTTPMethod = "POST"

傳遞請求參數:

request.httpBody = requestXml.data(using: String.Encoding.utf8)

編寫一個用於處理響應的回調方法,這個方法的入參和返回類型是固定的:

func checkItemListCallback(response:URLResponse?,data:Data?,error:Error?) -> Void{
    if error != nil{
        print(error)
    }
    else {
        let responseXml = String.init(data:data!,encoding:String.Encoding.utf8)
        print("獲得響應數據:")
        print(responseXml)
    }
}

使用NSURLConnection發送請求,並設置響應回調方法:
NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main, completionHandler:completionHandler)

以上就完成了所有的發送請求的步驟。下面是一個完整的封裝好的方法,需要注意的是最後一個入參需要傳入一個用於處理響應數據的回調方法:

func requestToServerByPost(_ postData:String,webserviceUrl:String,completionHandler:@escaping (_ response:URLResponse?,_ data:Data?,_ error:Error?) -> Void){
    print("url:"+webserviceUrl)
    print("參數:"+postData)
    let url:URL = URL(string:webserviceUrl)!
    let request:NSMutableURLRequest = NSMutableURLRequest(url: url)
    request.httpMethod = "POST"
    request.httpBody = postData.data(using: String.Encoding.utf8)
        
    NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main, completionHandler:completionHandler)
}

以上的例子全部都是基於post方式的,如果是get方式的話,會更簡單:

func requestToServerByGet(_ webserviceUrl:String,completionHandler:@escaping (_ response:URLResponse?,_ data:Data?,_ error:Error?) -> Void){
    print("url:"+webserviceUrl)
    let url:URL = URL(string:webserviceUrl)!
    let request:URLRequest = URLRequest(url:url)
        
    NSURLConnection.sendAsynchronousRequest(request, queue: OperationQueue.main, completionHandler:completionHandler)
}



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