博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift学习笔记(3)iOS 9 中的网络请求
阅读量:6316 次
发布时间:2019-06-22

本文共 2948 字,大约阅读时间需要 9 分钟。

Swift学习笔记(3)iOS 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 UIKitclass 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()    }}

运行结果

这里写图片描述

你可能感兴趣的文章
我的友情链接
查看>>
KIS专业版提示:套打初始化数据错误,未找到提供程序
查看>>
搭建LAMP
查看>>
ios学习以来的总结
查看>>
6425C-Lab3 管理用户与服务帐户(2)
查看>>
微软私有云分享(R2)26配置基线与更新
查看>>
3 - 安装路由和远程访问并配置NAT
查看>>
shutdown reboot init 重启命令 关机命令 简单介绍
查看>>
通配符
查看>>
界面编程-3
查看>>
计算器
查看>>
Android Studio下离线安装Gradle
查看>>
安装Exchange Server 2013信息权限保护(IRM)
查看>>
我的友情链接
查看>>
VM VirtualBox增强工具的安装
查看>>
我的友情链接
查看>>
转:一位北大青鸟毕业生的心声
查看>>
nginx + lua + fastdfs
查看>>
Linux环境下进行web增量部署
查看>>
Function.prototype.bind
查看>>