[Xcode 实际操作]八、网络与多线程-(9)使用异步Get方式获取网页源码

目录:[Swift]Xcode实际操作

本文将演示如何通过Get请求方式,异步获取网页源码。

异步请求与同步请求相比,不会阻塞程序的主线程,而会建立一个新的线程。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4     
 5     override func viewDidLoad() {
 6         super.viewDidLoad()
 7         // Do any additional setup after loading the view, typically from a nib.
 8         
 9         //创建一个网址对象,指定请求网络数据的网址。
10         let url = URL(string: "https://www.cnblogs.com/strengthen/")
11         
12         //创建一个网络请求对象,参数说明:
13         //1.代表请求访问的路径
14         //2.代表网络请求的缓存协议
15         //3.代表网络请求的超时时间
16         let request = URLRequest.init(url: url!, 
17         cachePolicy: .useProtocolCachePolicy,
18         timeoutInterval: 30)
19         
20         //网址会话URLSession在2013年发布,苹果对它的定位是作为旧的网络请求接口的替代者。
21         //这里获得网址会话的单例对象
22         let session = URLSession.shared
23         //所有网络请求工作,都是通过网址会话任务对象来完成的。
24         //可以使用闭包、代理或者两者混合的方式,来创建网络请求任务。
25         //创建一个网络请求任务,根据指定的网址请求对象,获取接口的内容,
26         //并在完成时通过闭包语句,处理服务器返回的数据
27         let task = session.dataTask(with: request, completionHandler: {(data, response, error) -> Void in
28             //如果出现网络请求错误,
29             if error != nil{
30                 //则在控制台打印输出错误代码和错误信息
31                 print(error.debugDescription)
32             }else{
33                 //将网络返回的数据对象,根据指定的编码方式,转换为字符串
34                 let result = String(data: data!, encoding: String.Encoding.utf8)、
35                 //在控制台输出字符串的内容
36                 print(result ?? "")
37             }
38         })
39         
40         //任务创建后,调用resume方法开始工作。
41         task.resume()
42     }
43     
44     override func didReceiveMemoryWarning() {
45         super.didReceiveMemoryWarning()
46         // Dispose of any resources that can be recreated.
47     }
48 }
原文地址:https://www.cnblogs.com/strengthen/p/10060564.html