2016年3月29日 星期二

iOS筆記:NSURLSession

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

沒有留言:

張貼留言