zoukankan      html  css  js  c++  java
  • [Xcode 实际操作]八、网络与多线程-(9)使用异步Get方式获取网页源码

    目录:[Swift]Xcode实际操作

    本文将演示如何通过Get请求方式,异步获取网页源码。

    异步请求与同步请求相比,不会阻塞程序的主线程,而会建立一个新的线程。

    在项目导航区,打开视图控制器的代码文件【ViewController.swift】

     1 import UIKit
     2 
     3 class ViewController: UIViewController {
     4     
     5     override func viewDidLoad() {
     6         super.viewDidLoad()
     7         // Do any additional setup after loading the view, typically from a nib.
     8         
     9         //创建一个网址对象,指定请求网络数据的网址。
    10         let url = URL(string: "https://www.cnblogs.com/strengthen/")
    11         
    12         //创建一个网络请求对象,参数说明:
    13         //1.代表请求访问的路径
    14         //2.代表网络请求的缓存协议
    15         //3.代表网络请求的超时时间
    16         let request = URLRequest.init(url: url!, 
    17         cachePolicy: .useProtocolCachePolicy,
    18         timeoutInterval: 30)
    19         
    20         //网址会话URLSession在2013年发布,苹果对它的定位是作为旧的网络请求接口的替代者。
    21         //这里获得网址会话的单例对象
    22         let session = URLSession.shared
    23         //所有网络请求工作,都是通过网址会话任务对象来完成的。
    24         //可以使用闭包、代理或者两者混合的方式,来创建网络请求任务。
    25         //创建一个网络请求任务,根据指定的网址请求对象,获取接口的内容,
    26         //并在完成时通过闭包语句,处理服务器返回的数据
    27         let task = session.dataTask(with: request, completionHandler: {(data, response, error) -> Void in
    28             //如果出现网络请求错误,
    29             if error != nil{
    30                 //则在控制台打印输出错误代码和错误信息
    31                 print(error.debugDescription)
    32             }else{
    33                 //将网络返回的数据对象,根据指定的编码方式,转换为字符串
    34                 let result = String(data: data!, encoding: String.Encoding.utf8)、
    35                 //在控制台输出字符串的内容
    36                 print(result ?? "")
    37             }
    38         })
    39         
    40         //任务创建后,调用resume方法开始工作。
    41         task.resume()
    42     }
    43     
    44     override func didReceiveMemoryWarning() {
    45         super.didReceiveMemoryWarning()
    46         // Dispose of any resources that can be recreated.
    47     }
    48 }
  • 相关阅读:
    zabbix4.2.5常见问题指南
    postgres常用运维sql
    centos7部署inotify与rsync实现实时数据同步
    postgres主从基于流复制
    postgres高可用学习篇三:haproxy+keepalived实现postgres负载均衡
    postgres高可用学习篇二:通过pgbouncer连接池工具来管理postgres连接
    postgres高可用学习篇一:如何通过patroni如何管理3个postgres节点
    centos7安装yum安装pip
    nginx1.15.10配置使用非https访问返回403
    zabbix4.2.5自定义告警模板
  • 原文地址:https://www.cnblogs.com/strengthen/p/10060564.html
Copyright © 2011-2022 走看看