NSURLSession
NSURLSession從iOS9開始取代了Connection.
NSURLSessionTask 為抽象類別,它有三個子類別:NSURLSessionDataTask、NSURLSessionUploadTask、NSURLSessionDownloadTask 負責處理網路任務、取得JSON或XML資料,以及上傳下載文件: 範例
NSURL *url = [NSURL URLWithString:@"http://www.imdb.com/"];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//NSLog(@"%@", data);
NSLog(@"%@", response);
}];
[dataTask resume];
HTTPS
當完成session的request並執行後發生以下錯誤:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file.
A: 原因是因為Applw將原HTTP協議改成了HTTPS協議,使用SSL TLS1.2加密請求數據.
iOS 9新增App Transport Security(ATS)的項目,重點是你在APP中如果有網路的要求時,其網址必定要是加密協定(https),否則連線要求會被禁止。主要是保護您的APP在進行網路通訊時一切資料都是加密,防止被嗅探。
解法:在info.plist中添加
<key>NSAppTransportSecurity</key><dict>
<key>NSAllowsArbitraryLoads</key>
<true/></dict>
參考:
1. http://my.oschina.net/u/2340880/blog/618888
2. http://cms.35g.tw/coding/ios-9-xcode7-http-%E9%8C%AF%E8%AA%A4/
3. https://www.raywenderlich.com/67081/cookbook-using-nsurlsession
沒有留言:
張貼留言