<p id="qitwt"></p>
      1. <object id="qitwt"><strong id="qitwt"></strong></object>
        <p id="qitwt"></p>
        <li id="qitwt"></li>
        <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
        <p id="qitwt"><label id="qitwt"></label></p>
      2. <acronym id="qitwt"></acronym>
        <p id="qitwt"></p>
        免費開源的iOS開發學習平臺

        iOS開發之網絡編程:11-NSURLSession的簡單使用

        這篇文章我們用實例來講解一下NSURLSession的基本用法。

        1、NSURLSession實現POST請求

        • 設置請求(在聚合數據上申請【微信精選】數據)
            NSURL *url = [NSURL URLWithString:@"http://v.juhe.cn/weixin/query?"];
            NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
            request.HTTPMethod = @"POST";
            request.HTTPBody = [@"key=你申請的APPKEY" dataUsingEncoding:NSUTF8StringEncoding];
        
        • 創建NSURLSession,設置代理(遵守NSURLSessionDelegate協議),配置為默認配置,代理方法執行在主線程。
        NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
        
        • 創建任務
            NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
            {
                //請求成功,解析數據
                NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data
                                                                                   options:NSJSONReadingMutableContainers  error:nil];
                //獲取所需數據
                NSDictionary *dict = dictionary[@"result"];
                NSArray *arr = dict[@"list"];
                NSDictionary *dic = arr[0];
                NSLog(@"%@",dic[@"title"]);
         }];
        
        • 啟動任務(所有類型的task都要調用resume方法才會開始進行請求)
            [task resume];
        
        • NSURLSessionDelegate代理方法

        session關閉回調

        - (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(nullable NSError *)error;
        

        與身份驗證和證書安全問題相關的方法

        - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge  completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler;
        

        后臺任務完成后調用的方法

        - (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session NS_AVAILABLE_IOS(7_0);
        

        2、下載文件

            NSURLSession *session = [NSURLSession sharedSession];
            NSURL *url = [NSURL URLWithString:@"http://qiniu.99ios.com/99ios/1479730067100.png"] ;
            NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
                // location是沙盒中tmp文件夾下的一個臨時url,文件下載后會存到這個位置,由于tmp中的文件隨時可能被刪除,所以我們需要自己需要把下載的文件挪到需要的地方
                NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:response.suggestedFilename];
                //打印文件被存儲的路徑
                NSLog(@"%@",path);
                // 剪切文件
                [[NSFileManager defaultManager] moveItemAtURL:location toURL:[NSURL fileURLWithPath:path] error:nil];
            }];
            // 啟動任務
            [task resume];
        

        青青草国产成人久久_jizzjizz日本护士高清_亚洲 另类 国产 另类_99久久免费精品色老
        <p id="qitwt"></p>
          1. <object id="qitwt"><strong id="qitwt"></strong></object>
            <p id="qitwt"></p>
            <li id="qitwt"></li>
            <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
            <p id="qitwt"><label id="qitwt"></label></p>
          2. <acronym id="qitwt"></acronym>
            <p id="qitwt"></p>