1. 程式人生 > >iOS項目開發實戰——使用同步請求獲取網頁源碼

iOS項目開發實戰——使用同步請求獲取網頁源碼

b2c ont over per 未能 enter nsstring targe 技術

網絡請求一般分為同步請求和異步請求,同步請求假設訪問時間過長,會造成界面卡死狀態,用戶體驗不是非常好。可是請求速度較快的話,也能夠考慮使用同步訪問。如今先來學習同步訪問。

(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 。

歡迎大家訪問!



iOS項目開發實戰——使用同步請求獲取網頁源碼