iOS项目开发实战——使用同步请求获取网页源码

Posted brucemengbm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS项目开发实战——使用同步请求获取网页源码相关的知识,希望对你有一定的参考价值。

        网络请求一般分为同步请求和异步请求,同步请求假设訪问时间过长,会造成界面卡死状态,用户体验不是非常好。可是请求速度较快的话,也能够考虑使用同步訪问。如今先来学习同步訪问。

(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项目开发实战——使用同步请求获取网页源码的主要内容,如果未能解决你的问题,请参考以下文章

iOS项目开发实战——网页源码实现二进制和HTML的转换

1python爬虫 request.urlopen请求网页获取源码

Java开发核心知识笔记共2100页,原理+实战+视频+源码

爬虫的基本原理

Python文本爬虫实战

图片获取太麻烦?python爬虫实战:百度百万级图片采集