Swift學習筆記(3)iOS 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 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()
}
}
執行結果
相關文章
- Swift 3 網路請求+資料解析Swift
- swift學習筆記《3》-技巧Swift筆記
- iOS9 中關閉ATS的方法(網路請求失敗)iOS
- swift 網路請求Alamofire的使用Swift
- Swift 中的網路請求問題 OC(AFNetworking) && Swift(Alamofire)Swift
- iOS學習筆記43 Swift(三)類iOS筆記Swift
- Swift:面向協議的網路請求Swift協議
- Swoft 學習筆記之 request 請求筆記
- swift網路資料請求方法Swift
- iOS學習筆記14 網路(三)WebViewiOS筆記WebView
- iOS原生網路請求iOS
- Android網路請求(3) 網路請求框架OkHttpAndroid框架HTTP
- iOS學習筆記47 Swift(七)泛型iOS筆記Swift泛型
- node學習之路(一)—— 網路請求
- Flutter 高效自學筆記(三)——網路請求Flutter筆記
- ios網路學習------9 播放網路視訊iOS
- Swift 網路請求 : Moya初步認識Swift
- iOS 使用Moya網路請求iOS
- iOS網路請求穿值iOS
- iOS學習筆記49 Swift(九)訪問控制iOS筆記Swift
- CSRF 跨站請求偽造學習筆記筆記
- 【OCP學習筆記】配置網路環境 -- 3筆記
- [譯]使用 Siesta 處理 Swift 網路請求Swift
- swift學習筆記《1》Swift筆記
- swift學習筆記《4》Swift筆記
- 吳恩達機器學習筆記 —— 9 神經網路學習吳恩達機器學習筆記神經網路
- swift學習筆記《2》-swift語法Swift筆記
- 【學習筆記】網路流筆記
- [網路]NIO學習筆記筆記
- 網路流學習筆記筆記
- Objective C之NSDictionary學習筆記(IOS 9 1)Object筆記iOS
- muduo網路庫學習筆記(3):Thread類筆記thread
- RXSwift學習(2)—網路請求Moya的基本使用Swift
- Swift進階學習筆記Swift筆記
- Jest中Mock網路請求Mock
- 十. Axios網路請求封裝iOS封裝
- IOS網路請求報錯返回碼iOS
- iOS 網路請求資料快取iOS快取