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