当前位置: > > > Swift - 同步请求获取网络数据

Swift - 同步请求获取网络数据

(自iOS9.0起,NSURLConnection.sendSynchronousRequest被废除不用了。建议改用NSURLSession的dataTaskWithRequest方法。具体用法可以参考我的另一篇文章:Swift - 使用NSURLSession同步获取数据(通过添加信号量)

使用NSURLConnection可以实现http通信。它提供了异步请求和同步请求两种通信方式。
注意:同步请求数据会造成主线程阻塞,必须请求结束后用户才能做其他的操作,所有通常在请求大数据或者网络不畅时不建议使用。

同步请求样例:
//创建NSURL对象
let url:NSURL! = NSURL(string: "http://www.hangge.com")
//创建请求对象
let urlRequest:NSURLRequest = NSURLRequest(URL: url)
//响应对象
var response:NSURLResponse?
        
do{
      //发送请求
      let data:NSData? = try NSURLConnection.sendSynchronousRequest(urlRequest,
          returningResponse: &response)
      let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
      print(str)
            
}catch let error as NSError{
      //打印错误消息
      print(error.code)
      print(error.description)
}
评论2
  • 2楼
    2016-05-21 18:44
    HawkLeng

    你好,谢谢分享,请问有做过异步的吗?

    站长回复

    默认情况下,NSURLSession就是异步获取数据。可以参考我原来写的这篇文章:Swift - 使用NSURLSession加载数据、下载、上传文件

  • 1楼
    2015-10-18 21:06
    木头人

    ios9.0 sendSynchronousRequest已经被弃用了,也没有error参数了,改的要抛异常了

    站长回复

    已修正,多谢提醒。