iOS项目开发实战——iOS网络编程获取网页Html源代码

如今我们身处互联网的时代,任何一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互。一个没有涉及网络编程的应用会显得比较low,这里我们将会开始使用Swift开发iOS应用,并且主要来实现网络操作方面的功能。

这里的需求是获取某个网页的Html源代码,即从网上获取数据。具体实现如下:

(1)创建一个iOS项目,Language选择Swift。然后在ViewController.swift中实现如下代码:

    override func viewDidLoad() {
        super.viewDidLoad()

        var str = NSString(contentsOfURL: NSURL(string: "http://www.baidu.com")!, encoding: NSUTF8StringEncoding, error: nil)
        println(str!)//上述返回的是Optional Type可选值,返回值有可能为空,在我确保有返回值的情况下,使用感叹号!获取该值;
    }

(2)运行程序,在控制台打印结果:(百度主页Html内容太多,我只复制出一部分)

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <meta content="always" name="referrer">
        <meta name="theme-color" content="#2932e1">
        <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
        <link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="百度搜索">
        <link rel="icon" sizes="any" mask="" href="//www.baidu.com/img/baidu.svg">
        <link rel="dns-prefetch" href="//s1.bdstatic.com">
        <link rel="dns-prefetch" href="//t1.baidu.com">
        <link rel="dns-prefetch" href="//t2.baidu.com">
        <link rel="dns-prefetch" href="//t3.baidu.com">
        <link rel="dns-prefetch" href="//t10.baidu.com">
        <link rel="dns-prefetch" href="//t11.baidu.com">
        <link rel="dns-prefetch" href="//t12.baidu.com">
        <link rel="dns-prefetch" href="//b1.bdstatic.com">
        <title>
            百度一下,你就知道
        </title>
        <style index="index" id="css_index" type="text/css">
html,body{height:100%}html{overflow-y:auto}#wrapper{position:relative;_position:;min-height:100%}#head{padding-bottom:100px;
        text-align:center;*z-index:1}#ftCon{height:100px;position:absolute;bottom:44px;text-align:center;width:100%;margin:0 auto;z-index:0;overflow:hidden}#ftConw{width:720px;margin:0 auto}body{font:12px arial;text-align:;background:#fff}body,p,form,ul,li{margin:0;padding:0;list-style:none}body,form,#fm{position:relative}td{text-align:left}img{border:0}a{color:#00c}a:active{color:#f60}.bg{background-image:url(http://s1.bdstatic.com/r/www/cache/static/global/img/icons_45de3f02.png);background-repeat:no-repeat;_background-image:url(http://s1.bdstatic.com/r/www/cache/static/global/img/icons_15f748ea.gif)}.bg_tuiguang_browser{width:16px;height:16px;background-position:-600px 0;display:inline-block;vertical-align:text-bottom;font-style:normal;overflow:hidden;margin-right:5px}.bg_tuiguang_browser_big{width:56px;height:56px;position:absolute;left:10px;top:10px;background-position:-600px -24px}
        .bg_tuiguang_weishi{width:56px;height:56px;position:absolute;left:10px;top:10px;background-position:-672px -24px}.c-icon{display:inline-block;width:14px;height:14px;vertical-align:text-bottom;font-style normal;overflow:hidden;background:url(http://s1.bdstatic.com/r/www/cache/static/global/img/icons_45de3f02.png) no-repeat 0 0;_background-image:url(http://s1.bdstatic.com/r/www/cache/static/global/img/icons_15f748ea.gif)}.c-icon-triangle-down-blue{background-position:-480px -168px}.c-icon-chevron-unfold2{background-position:-504px -168px}#m{width:720px;margin:0 auto}#nv a,#nv b,.btn,#lk{font-size:14px}input{border:0;padding:0}#nv{height:19px;font-size:16px;margin:0 0 4px;text-align:left;text-indent:137px}.s_btn{width:95px;height:32px;padding-top:2px\9;font-size:14px;background-color:#ddd;background-position:0 -48px;cursor:pointer}.s_btn_h{background-position:-240px -48px}.s_btn_wr{width:97px;height:34px;display:inline-block;background-position:-120px -48px;*position:relative;z-index:0;vertical-align:top}

        </style>
    </head>
    <body>
    </body>
</html>

通过以上代码,我们就能从网页上成功获取源代码。但是由于我在上述注释中关于可选型的问题,我决定优化一下代码,就算网络数据访问不成功或者出现为空有异常等等情况,也能反馈给用户一个提示,优化代码如下,注意对Optional Type为空的操作。

    override func viewDidLoad() {
        super.viewDidLoad()

            var strHTML = NSString(contentsOfURL: NSURL(string: "111111")!, encoding: NSUTF8StringEncoding, error: nil)

        if let print = strHTML{
            println(strHTML!)

        }else{

            println("未能获取网络数据")

        }

    }

运行以上代码,就能返回”未能获取网络数据“的提示了。就算网络有异常系统也不会崩溃。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 21:40:16

iOS项目开发实战——iOS网络编程获取网页Html源代码的相关文章

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

在网络编程中,异步请求是用的最多的请求方式,与同步相比,不会造成用户界面的卡死,会有较好的用户体验.现在我们使用Swift在iOS项目中获取某个网页的HTML源代码. override func viewDidLoad() { super.viewDidLoad() //异步请求 NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!), queue

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

网络请求一般分为同步请求和异步请求,同步请求假设訪问时间过长,会造成界面卡死状态,用户体验不是非常好.可是请求速度较快的话,也能够考虑使用同步訪问.如今先来学习同步訪问. (1)在viewDidLoad()方法中实现例如以下代码: override func viewDidLoad() { super.viewDidLoad() var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: "h

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

网络请求一般分为同步请求和异步请求,同步请求如果访问时间过长,会造成界面卡死状态,用户体验不是很好.但是请求速度较快的话,也可以考虑使用同步访问.现在先来学习同步访问. (1)在viewDidLoad()方法中实现如下代码: override func viewDidLoad() { super.viewDidLoad() var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: "http

iOS项目开发实战——iOS网络编程获取网页Html源码

现在我们身处互联网的时代.不论什么一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比較low,这里我们将会開始使用Swift开发iOS应用,而且主要来实现网络操作方面的功能. 这里的需求是获取某个网页的Html源码,即从网上获取数据.详细实现例如以下: (1)创建一个iOS项目,Language选择Swift.然后在ViewController.swift中实现例如以下代码: override func viewDidLoad() { super

iOS项目开发实战——获取网页源代码的二进制数据

我在上一篇博客<iOS项目开发实战--iOS网络编程获取网页Html源代码>中讲述了如何获取一个网页的HTML源代码,可以满足一定的需求.但是由于特殊原因,我们想获取的是一个网页的二进制数据,那么应该怎么办呢? 具体实现如下: (1)创建一个iOS项目,Language选择Swift,然后在ViewController.swift 中写入如下代码: override func viewDidLoad() { super.viewDidLoad() var data = NSData(conte

聚合数据 iOS 项目开发实战:条码查询器

记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.cn/docs/api/id/52 核心内容: 1.条码查询器结构分析.2.如何将聚合数据 SDK 添加到工程中.3.模型以及业务类的封装.4.控制器间的数据传递.5.tableView 以及 webView 的使用. 具体课时 1.条码查询器界面搭建 12:53 本课时通过分析条码查询的UI结构和业

iOS项目开发实战——storyboard设置界面技巧与注意事项

在iOS开发中,使用Main.storyboard来设计界面是每一个iOS开发人员需要面对的问题,使用storyboard相比较Android中使用XML来设置布局,有优点也有缺陷,现在我们来谈谈storyboard的设计技巧. (1)直接使用鼠标右键可以直接缩放storyboard的缩放比例.当然你也可以用触摸板使用2根手指缩放. . (2)拖拽控件绑定到代码中,不一定要从设计界面的控件中进行拖拽,也可以直接从左侧的列表中拖拽,这样会更加清晰方便. . (3)如何添加修改超过一屏的控件.我们把

iOS项目开发实战——设置视图的透明度改变动画

在iOS中 ,透明度的改变可以让View视图以一种渐变的效果动态的出现或者消退,非常有意思.这里我们将会对一个View控件的色块执行透明度改变的动画.关于其他的动画效果可以参考我的其他几篇博客<iOS项目开发实战--制作视图的平移动画以及解决移动异常问题>,<iOS项目开发实战--多个视图的平移动画与闭包函数的声明与调用>. (1)在Main.storyboard中拖入一个View,并且绑定到代码中. (2)实现代码如下: import UIKit class OpacityVie

iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示

文本将会实现把数据存储到plist文件里.然后在程序中进行读取.在TableView控件中依据不同的类别显示Section. 有关TableView 的其它实现,请參考<iOS项目开发实战--学会使用TableView列表控件(一)><iOS项目开发实战--学会使用TableView列表控件(二)><iOS项目开发实战--学会使用TableView列表控件(三)了解Section>. (1)新建一个Property List文件,这个也就是plist文件.我取名为dat