[Xcode 實際操做]8、網絡與多線程-(9)使用異步Get方式獲取網頁源碼

目錄:[Swift]Xcode實際操做html

本文將演示如何經過Get請求方式,異步獲取網頁源碼。swift

異步請求與同步請求相比,不會阻塞程序的主線程,而會創建一個新的線程。緩存

在項目導航區,打開視圖控制器的代碼文件【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 }
相關文章
相關標籤/搜索