目錄:[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 }