NSURLSession的應用

iOS7以后發布了NSURLSession用來替換NSURLConnection,NSURLSession使用方式有以下兩種:
1.block方式
(1)創建的步驟
獲取單例會話對象
創建URL對象
隱含創建request
創建NSURLSessionDataTask

  // 1.獲取會話對象
NSURLSession *session = [NSURLSession sharedSession];
//另外一種生成默認的GET請求的方法
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/video"];NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSLog(@"%@", dict);

(2)使用NSURLSessionDataTask
創建session
創建URL
創建URLRequest
創建NSURLSessionDataTask

// 2.創建的一URL地址
NSURL *url = [NSURL URLWithString:@"http://192.168.15.172:8080/MJServer/login"];
// 3.創建一個請求對象
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"username=123&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];NSLog(@"%@", dict);
}];[task resume];

(3)使用NSURLSessionDownloadTask

// 1.得到session對象
NSURLSession *session = [NSURLSession sharedSession];
// 2.創建URL對象

NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/resources/test.mp4"];NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {//NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];NSString *filePath = [caches stringByAppendingPathComponent:response.suggestedFilename];NSFileManager *fileManager = [NSFileManager defaultManager];[fileManager moveItemAtPath:location.path toPath:filePath error:nil];}];

2.代理方式

  • (void)downLoadTask2 {
    NSURLSessionConfiguration *cfg = [NSURLSessionConfiguration defaultSessionConfiguration];
    // 使用配置對象獲取會話對象
    NSURLSession *session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];

    // 創建一個URL
    NSURL *url = [NSURL URLWithString:@”http://localhost:8080/MJServer/resources/test.mp4“];
    NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url];

    [task resume];

}
- (void)URLSession:(NSURLSession )session downloadTask:(NSURLSessionDownloadTask )downloadTask didFinishDownloadingToURL:(NSURL *)location {
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [caches stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager moveItemAtPath:location.path toPath:filePath error:nil];
}

  • (void)URLSession:(NSURLSession )session downloadTask:(NSURLSessionDownloadTask )downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite {
    double progress = (double)totalBytesWritten / totalBytesExpectedToWrite;
    NSLog(@”已經下載了:%f”, progress);

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247124.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247124.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247124.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ASP.NET Core Web 應用程序系列(一)- 使用ASP.NET Core內置的IoC容器DI進行批量依賴注入(MVC當中應用)...

在正式進入主題之前我們來看下幾個概念: 一、依賴倒置 依賴倒置是編程五大原則之一,即: 1、上層模塊不應該依賴于下層模塊,它們共同依賴于一個抽象。 2、抽象不能依賴于具體,具體依賴于抽象。 其中上層就是指使用者&am…

iOS中XML解析

iOS中XML解析分為兩種實現方式:SAX與DOM SAX方式:主要是事件驅動的解析方式,是逐行讀取XML數據,不斷回調代理,告訴代理當前解析的元素開始或者結束。 DOM解析方式:是講整個XML數據全部讀入內存&#xff0…

蘋果電腦基本設置+Linux 命令+Android 實戰集錦

本文微信公眾號「AndroidTraveler」首發。 背景 大多數應屆畢業生在大學期間使用的比較多的是 windows 電腦,因此初入職場如果拿到一臺蘋果電腦,可能一時間不能夠很快的上手。基于此,這邊出了系列視頻,通過實際的演示讓沒使用過蘋…

iOS中POST請求

iOS中POST請求的發送需要使用NSMutableURLRequest可以設置URL request的頭字段,比如超時時間,請求類型:GET POST等一些關鍵頭字段: - (IBAction)login { // 1.用戶名 NSString *usernameText self.username.text; if (userna…

發送JSON數據給服務器

需要將JSON格式的數據傳送給服務器,注意需要設置: [request setValue:”application/json” forHTTPHeaderField:”Content-Type”]; Content-Type類型為:application/json // 1.URL NSURL *url [NSURL URLWithString:"http://localh…

Mac中AndroidStudio沒有找到Plugins的問題

我們在windows中都可以正常找到plugins 但是在Mac上AndroidStudio里 setting打開卻沒有plugins 正準備在Mac上搞一下flutter呢 我感覺智商受到了侮辱! 這里其實是mac版本給我開了個玩笑 你可以按快捷鍵,你就可以找到 快捷鍵 command ‘,’ 沒錯就是comm…

進程和操作系統概述

進程和操作系統概述 進程的基礎 程序和進程: 程序是一對靜態的代碼文件 進程是一個正在運行著的程序,抽象概念 進程由操作系統操控調用交于CPU運行 操作系統 1.管理控制協調計算機硬件和軟件的關系 2.操作系統的作用? ? 第一個作用&#xff…

iOS手勢操作簡介(一)

iOS中能夠響應手勢操作的類必須要繼承自UIResponder,才能夠處理手勢響應操作。 默認繼承了UIResponder的類有:UIApplication UIViewController UIView都繼承自UIResponder. UIView是UIResponder的子類,可以實現下列4個方法處理不同的觸摸事…

iOS開發中手勢處理簡介(二)

iOS中手勢操作事件的產生于傳遞 發生觸摸事件后,系統會將該事件加入到一個由UIApplication管理的事件隊列中 UIApplication會從事件隊列中取出最前面的事件,并將事件分發下去以便處理,通常,先發送事件給應用程序的主窗口&#x…

對前端Jenkins自動化部署的研究

1. 安裝 安裝 Nginx 1.1去官網下直接下載,解壓縮 start nginx就可以使了,常用命令: start nginx # 啟動 nginx -s reload # 修改配置后重新加載生效 nginx -s reopen # 重新打開日志文件 nginx -t # 配置文件檢測是否正確 1.2 安裝Jenkins…

python超神之路:Python3 列表list合并的4種方法

Python3 列表list合并的4種方法 方法1: 直接使用""號合并列表 aList [1,2,3] bList [www, pythontab.com] cList aList bList dList bList aList print(cList) print(dList) # 結果: [1, 2, 3, www, pythontab.com] [www, pythontab.com, 1, 2, 3] …

iOS手勢操作簡介(三)

監聽觸摸事件的做法 如果想監聽一個view上面的觸摸事件,之前的做法是 自定義一個view 實現view的touches方法,在方法內部實現具體處理代碼 通過touches方法監聽view觸摸事件,有很明顯的幾個缺點 必須得自定義view 由于是在view內部的to…

iOS手勢操作簡介(四)

當事件傳遞到相應的UIResponder后,會首先調用: hitTest:withEvent: return (UIView *) UIApplication -> UIWindow 什么時候調用:當事件傳遞給一個控件的時候就會調用 作用:找最合適的viewhitTest:withEvent: return (UIView…

ASP.NET Core Web 應用程序系列(二)- 在ASP.NET Core中使用Autofac替換自帶DI進行批量依賴注入(MVC當中應用)...

在上一章中主要和大家分享在MVC當中如何使用ASP.NET Core內置的DI進行批量依賴注入,本章將繼續和大家分享在ASP.NET Core中如何使用Autofac替換自帶DI進行批量依賴注入。 PS:本章將主要采用構造函數注入的方式,下一章將繼續分享如何使之能夠同…

iOS手勢操作簡介(五)

利用手勢操作實現抽屜效果: 第一步:搭建UI (void)addChildView { // left UIView *leftView [[UIView alloc] initWithFrame:self.view.bounds]; leftView.backgroundColor [UIColor greenColor]; [self.view addSubview:leftView]; _leftView…

Java過濾器與SpringMVC攔截器之間的關系與區別

今天學習和認識了一下,過濾器和SpringMVC的攔截器的區別,學到了不少的東西,以前一直以為攔截器就是過濾器實現的,現在想想還真是一種錯誤啊,而且看的比較粗淺,沒有一個全局而又細致的認識,由于已…

iOS手勢操作簡介(六)

利用UIGestureRecognizer來對手勢進行處理: interface HMViewController () property (weak, nonatomic) IBOutlet UIImageView *imagView; end implementation HMViewController (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup aft…

iOS并行程序開發- GCD NSOperationQueue(1)

import UIKit let imageURLs [“http://www.planetware.com/photos-large/F/france-paris-eiffel-tower.jpg“, “http://adriatic-lines.com/wp-content/uploads/2015/04/canal-of-Venice.jpg“, “http://algoos.com/wp-content/uploads/2015/08/ireland-02.jpg“, “http:…

二次冪權限設計

設置含有的權限如增刪改查減為1,2,4,8,16 如果A包含增刪改這5個權限,那A的值為1247 如果B包含增改查這5個權限,那A的值為14813 如果C包含增刪改查減這5個權限,那A的值為12481631 7二進制為111,13的二進制為1101,31二進制為11111 1二進制為1&a…

最好用的koa2+mysql的RESTful API腳手架,mvc架構,支持node調試,pm2部署。

#基于webpack構建的 Koa2 restful API 服務器腳手架這是一個基于 Koa2 的輕量級 RESTful API Server 腳手架,支持 ES6, 支持使用TypeScript編寫。GIT地址:https://github.com/Allenzihan/koa2-mysql-framework.git此腳手架只安裝了一些配合koa2使用的必要…