和前一篇差不多,iOS以前一直是用NSURLConnection来完成HTTP连接,但是在新的SDK中已经将它定义为过时状态,作为一个优秀的程序员也要跟上,不可掉队。我们简单看下Swift2.0中的http请求。
func httpRequest(urlString :String){
let url = NSURL(string: urlString)
let request = NSURLRequest(URL: url!)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
let result = NSString(data:data!, encoding: NSUTF8StringEncoding)
print(result)
}
task.resume()
}
简单的代码即可实现HTTP请求。请用也非常方便
self.httpRequest("http://www.it72.com/api.php?test=ITHTW")
上面是HTTP GET方法,下面再简单改下,POST方法
func httpPostRequest(urlString :String,postData :String){
let url = NSURL(string: urlString)
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
let result = NSString(data:data!, encoding: NSUTF8StringEncoding)
print(result)
}
task.resume()
}
运行结果:

不过最后要注意的是,新版本中也要添加安全属性,在info.plist中添加NSAppTransportSecurity,然后在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 类型Boolean ,值设为 YES;不然会报
App Transport Security has blocked a cleartext 错误
最后再说明两点,NSURLSession是异步模式,并且它是单例。从shareSession()初始化也不难看出。所以它每次只能执行一个请求,如果有多个就要等待其它的请求完成才能继续往下执行!
本文链接:https://it72.com/7837.htm