Swift开发之NSURLSession的使用(GET和POST)

Home / iOS MrLee 2016-2-16 3333

和前一篇差不多,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()
    }

运行结果:

4JOUJYVC9LL[CD)F9UP8H50


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

本文链接:https://www.it72.com/7837.htm

推荐阅读
最新回复 (0)
返回