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


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