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

    欢迎大家訪问!



  • 相关阅读:
    经典8锁问题--助你彻底搞懂锁的概念
    linux上安装mysql
    Jenkins安装详解
    第一篇:实时网络日志分析器和交互式查看器--GoAccess安装
    Centos7上安装python3.7
    Nginx报错收集
    免费yum源镜像地址
    nginx日志文件切割
    腾讯云绑定和配置弹性网卡和添加弹性网卡
    LNMP-WEB应用环境搭建
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7257639.html
Copyright © 2020-2023  润新知