热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Swift学习笔记(3)iOS9中的网络请求

Swift学习笔记(3)iOS9中的网络请求目录Swift学习笔记3iOS9中的网络请求目录编码方法请求方法其他修改完整代码运行结果编码方法在iOS9中,以前常用的string

Swift学习笔记(3)iOS 9 中的网络请求

目录

  • Swift学习笔记3iOS 9 中的网络请求
    • 目录
    • 编码方法
    • 请求方法
    • 其他修改
    • 完整代码
    • 运行结果

编码方法

在iOS9中,以前常用的stringByAddingPercentEscapesUsingEncoding方法被废除了,取而代之的是stringByAddingPercentEncodingWithAllowedCharacters方法。

用法示例:

var strURL=String(format:"http://blog.csdn.net/sps900608")

//等价于strURL=strURL.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
strURL=strURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet(charactersInString:"`#%^{}\"[]|\\<> ").invertedSet)!

此外还可以如下写法:

strURL=strURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet)!

NSCharacterSet常用的类型有以下:

    URLHostAllowedCharacterSet      "#%/<>?@\^`{|}

URLFragmentAllowedCharacterSet "#%<>[\]^`{|}

URLPasswordAllowedCharacterSet "#%/:<>?@[\]^`{|}

URLPathAllowedCharacterSet "#%;<>?[\]^`{|}

URLQueryAllowedCharacterSet "#%<>[\]^`{|}

URLUserAllowedCharacterSet "#%/:<>?@[\]^`

请求方法

在iOS 9中NSURLConnection类被废除,替代者是NSURLSession类
使用示例:

let session=NSURLSession.sharedSession()
let dataTask=session.dataTaskWithRequest(request) { (data, reponse, error) -> Void in
if (error != nil){
NSLog("Error:\(error?.localizedDescription)")
}
else{
self.webView.loadData(data!, MIMEType: "text/html", textEncodingName: "utf-8", baseURL: url)
}
}
dataTask.resume()

NSURLsessionTask共有3个实体子类,应用于3种不同的场景,分别是NSURLSessionDataTask(数据请求)、NSURLSessionUploadTask(上传)、NSURLSessionDownloadTask(下载),上述代码使用的是NSURLSessionDataTask(数据请求)。

其他修改

在iOS 9中,进行HTTP请求会报以下错误“Transport Security policy requires the use of a secure connection”,苹果官方推荐使用安全性更好的HTTPS协议,如果仍要进行HTTP请求,可以进行以下修改
选择info.plist,在Info.plist中添加App Transport Security Settings类型Dictionary。然后在App Transport Security Settings下添加Allow Arbitrary Loads类型Boolean,值设为YES。如下图所示:

这里写图片描述

完整代码

import UIKit

class ViewController: UIViewController {

@IBOutlet var webView: UIWebView!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
startRequest()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func startRequest(){

var strURL=String(format:"http://blog.csdn.net/sps900608")
strURL=strURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet(charactersInString:"`#%^{}\"[]|\\<> ").invertedSet)!

let url=NSURL(string: strURL)!
let request=NSURLRequest(URL: url)

let session=NSURLSession.sharedSession()
let dataTask=session.dataTaskWithRequest(request) { (data, reponse, error) -> Void in
if (error != nil){
NSLog("Error:\(error?.localizedDescription)")
}
else{
self.webView.loadData(data!, MIMEType: "text/html", textEncodingName: "utf-8", baseURL:url)
}
}
dataTask.resume()
}

}

运行结果

这里写图片描述


推荐阅读
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • PyCharm中配置Pylint静态代码分析工具
    本文详细介绍如何在PyCharm中配置和使用Pylint,帮助开发者进行静态代码检查,确保代码符合PEP8规范,提高代码质量。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • moment 国际化设置中文语言 (全局) 及使用示例 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
author-avatar
林伯爵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有