zoukankan      html  css  js  c++  java
  • 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;100%;margin:0 auto;z-index:0;overflow:hidden}#ftConw{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{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{56px;height:56px;position:absolute;left:10px;top:10px;background-position:-600px -24px}
            .bg_tuiguang_weishi{56px;height:56px;position:absolute;left:10px;top:10px;background-position:-672px -24px}.c-icon{display:inline-block;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{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{95px;height:32px;padding-top:2px9;font-size:14px;background-color:#ddd;background-position:0 -48px;cursor:pointer}.s_btn_h{background-position:-240px -48px}.s_btn_wr{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("未能获取网络数据")
                
            }
            
        }

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


    github主页:https://github.com/chenyufeng1991  。欢迎大家訪问。

  • 相关阅读:
    剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
    剑指 Offer——3. 从尾到头打印链表
    剑指 Offer——2. 替换空格
    剑指 Offer——1. 二维数组中的查找
    LeetCode 905. Sort Array By Parity 按奇偶校验排列数组
    LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素
    SSH 代码笔记
    anaconda3安装caffe
    opencv多版本安装
    人脸文章与数据库
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7016801.html
Copyright © 2011-2022 走看看