iOS專案開發實戰——使用同步請求獲取網頁原始碼

乞力馬紮羅的雪CYF發表於2015-08-11

        網路請求一般分為同步請求和非同步請求,同步請求如果訪問時間過長,會造成介面卡死狀態,使用者體驗不是很好。但是請求速度較快的話,也可以考慮使用同步訪問。現在先來學習同步訪問。

(1)在viewDidLoad()方法中實現如下程式碼:

    override func viewDidLoad() {
        super.viewDidLoad()
        
        var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!), returningResponse: nil, error: nil)
        
        if let d = data{
        
            println(NSString(data: d, encoding: NSUTF8StringEncoding)!)//列印HTML
            
        }else{
        
            println("未能獲取網路資料")
            
        }
    }

輸出結果會成功列印出網頁HTML。


(2)列印出Http協議頭

在viewDidLoad()中實現以下程式碼:

 override func viewDidLoad() {
        super.viewDidLoad()
        
        var resp:NSURLResponse?
        
        var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!), returningResponse: &resp, error: nil)
        
        if let r = resp{
        
            println(r)  //列印Http協議頭;
        }
    }

輸出結果如下:


 (3)列印錯誤資訊

在進行網路操作時,偶爾出現錯誤是不可避免的,我們可以列印出錯誤,便於我們查錯,列印錯誤程式碼如下:

    override func viewDidLoad() {
        super.viewDidLoad()
        
        var resp:NSURLResponse?
        var error:NSError?
        
        var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!), returningResponse: &resp, error: &error)
        
        if let e = error{
        
            println(e)  //列印Http協議頭;
        }
    }

測試該程式碼時,我們可以關閉網路,然後就會出現錯誤:我進行測試時,出現的錯誤如下:



github主頁:https://github.com/chenyufeng1991  。歡迎大家訪問!


相關文章