Swift学习笔记(3)iOS 9 中的网络请求
来源:互联网 发布:kuka机器人编程手册 编辑:程序博客网 时间:2024/05/24 03:05
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 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() }}
运行结果
2 0
- Swift学习笔记(3)iOS 9 中的网络请求
- 【IOS学习】网络请求中的cookie
- 【IOS学习】网络请求中的cookie
- IOS学习笔记(16)网络请求,json解析
- IOS学习笔记(16)网络请求,json解析
- IOS学习笔记,网络请求,json解析
- swift 学习笔记1 -- json解析、网络请求、[myClass class]
- iOS中的网络请求
- iOS中的网络请求
- ios中的网络请求
- ios 网络请求 笔记
- iOS 网络请求 笔记
- ios学习--网络请求
- swift中的网络请求——NSURLConnection
- swift中的网络请求——NSURLSessionDataTask
- swift 网络请求 Get、Post HttpRequest For Swift language (iOS )
- iOS学习过程中的网络数据请求问题
- Swift 中的网络请求问题 OC(AFNetworking) && Swift(Alamofire)
- vi编辑器:命令模式、输入模式、末行模式
- 如何解包apk得到里面的源代码
- <div>
- 理解Java对象序列化——Serializable接口
- android http——网络请求二次封装的框架设计
- Swift学习笔记(3)iOS 9 中的网络请求
- python 正则
- java反射详解
- 部分常用表情在android各rom下的不兼容情况
- Shader Forge初级篇|RGB通道的UV混合效果 一
- mysq集群原理之Galera replication
- POJ 3744 Scout YYF I 矩阵快速幂+概率dp
- 无序列表<ul>与列表项目<li>
- OS X git之 Probably the path to Git executable is not valid