IOS9中使用NSURLConection發送異步網絡請求

IOS9中使用NSURLConection發送異步網絡請求

 

在ios9中,NSURLConection的sendSync..和sendAsync已通過時。被NSURLSession代替。html

 

如下藍色部分參考: https://lvwenhan.com/ios/454.html?utm_source=tuicoolios

NSURLSession是十分強大的。再次嘗試,兩次打印之間間隔了五秒,主線程未阻塞,證實 NSURLSession 爲異步執行。api

阻塞 

嘗試屢次點擊,咱們可以看到每五秒執行一次,直到所有執行完畢。服務器

NSURLSession 採用的是 「異步阻塞」 模型,即全部請求在發出後都進入 2# 線程執行,在 2# 線程內部按照阻塞隊列模式執行。初步判斷,此阻塞特性爲 NSURLSession.sharedSession() 單例模式的結果。網絡

 

普通網絡請求post:session

    NSURL *url=[NSURLURLWithString:@"http://apis.haoservice.com/weather"];異步

 

    NSMutableURLRequest *request=[NSMutableURLRequestrequestWithURL:url];post

    request.HTTPMethod=@"POST";ui

 

    NSString *data=[NSString  stringWithFormat:@"cityname=%@&key=%@",@"煙臺",@"f2b98cebe0514424a1edb4b99c1db95c"];url

    request.HTTPBody=[data  dataUsingEncoding:NSUTF8StringEncoding];

 

    NSURLSession *session=[NSURLSession  sharedSession];

    NSURLSessionDataTask *task=[session dataTaskWithRequest:request completionHandler:^(NSData*_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error) {

  //在此解析服務器返回的JSON或XML數據

    };

[task resume];   //這句話必定得要,開始任務的意思。

 

下載網絡請求:

    NSURLSessionDownloadTask *task=[sessiondownloadTaskWithRequest:requestcompletionHandler:^(NSURL *_Nullable location, NSURLResponse *_Nullable response, NSError *_Nullableerror) {

    }];

[task resume]

上傳文件請求:太複雜,也有這個方法,去頭文件找。

 注意:若是想得到下載進度或者斷點下載,應該不用block方法,應該設置代理,實現協議方法。

上述兩個方法也有直接寫入URL的方法,具體頭文件裏面找。

相關文章
相關標籤/搜索