NSURLSession的初步理解

2021-07-12 07:11:00 字數 4946 閱讀 6470

注意:當建立的session做為強引用時,需要自己手動釋放

- (void)dealloc

get請求的建立:

方法一:

//1.建立nsurlsession

nsurlsession *session = [nsurlsession sharedsession];

//2.根據會話物件來建立task

/* 第乙個引數:請求物件

第二個引數:completionhandler

data:響應體

response:響應頭

error:錯誤資訊

*/nsurlrequest *request = [nsurlrequest requestwithurl:[nsurl urlwithstring:@"鏈結"]];

nsurlsessiondatatask *datatask = [session datataskwithrequest:request completionhandler:^(nsdata * _nullable data, nsurlresponse * _nullable response, nserror * _nullable error) ];

//3.啟動任務

[datatask resume];

方法二:直接傳url

nsurlsession *session = [nsurlsession sharedsession];

nsurl *url = [nsurl urlwithstring:@"鏈結"];

//這裡雖然傳的是url,但是內部會進行封裝成為請求頭,預設是get請求;

[[session datataskwithurl:url completionhandler:^(nsdata * _nullable data, nsurlresponse * _nullable response, nserror * _nullable error) ] resume];

post請求建立:

nsurlsession *session = [nsurlsession sharedsession];

nsmutableurlrequest *request = [nsmutableurlrequest requestwithurl:[nsurl urlwithstring:@"鏈結"]];

nsurlsession**的使用:

//1.建立session,並設定**

/* 第乙個引數:配置資訊,使用預設;

第三個引數:控制**方法在哪個執行緒呼叫

*/nsurlsession *session = [nsurlsession sessionwithconfiguration:[nsurlsessionconfiguration defaultsessionconfiguration] delegate:self delegatequeue:[nsoperationqueue mainqueue]];

nsurlsessiondatatask *datatask = [session datataskwithurl:[nsurl urlwithstring:@"鏈結"]];

[datatask resume];

//**方法;

//1.接收到伺服器響應的時候呼叫,在這裡需要設定接收資料;

-(void)urlsession:(nsurlsession *)session datatask:(nsurlsessiondatatask *)datatask didreceiveresponse:(nsurlresponse *)response completionhandler:(void (^)(nsurlsessionresponsedisposition))completionhandler

//2.接收到伺服器返回資料的時候呼叫,該方法可能會被呼叫多次

-(void)urlsession:(nsurlsession *)session datatask:(nsurlsessiondatatask *)datatask didreceivedata:(nsdata *)data

//3.當請求完成之後呼叫,如果錯誤,那麼error有值

-(void)urlsession:(nsurlsession *)session task:(nsurlsessiontask *)task didcompletewitherror:(nserror *)error

nsurlsession *session = [nsurlsession sharedsession];  

nsurl * url = [nsurl urlwithstring:@"h鏈結"];

/*location:檔案的臨時儲存路徑

*/nsurlsessiondownloadtask *downloadtask = [session downloadtaskwithurl:url completionhandler:^(nsurl * _nullable location, nsurlresponse * _nullable response, nserror * _nullable error) ];

//3.啟動

[downloadtask resume];

[self.downloadtask cancelbyproducingresumedata:^(nsdata * _nullable resumedata) ];

self.downloadtask = [self.session downloadtaskwithresumedata:self.data];

[self.downloadtask resume];

然後使用nsurlsessiondownloadtask**方法:

/*

*/-(void)urlsession:(nsurlsession *)session downloadtask:(nsurlsessiondownloadtask *)downloadtask didwritedata:(int64_t)byteswritten totalbyteswritten:(int64_t)totalbyteswritten totalbyte***pectedtowrite:(int64_t)totalbyte***pectedtowrite

-(void)urlsession:(nsurlsession *)session downloadtask:(nsurlsessiondownloadtask *)downloadtask didresumeatoffset:(int64_t)fileoffset expectedtotalbytes:(int64_t)expectedtotalbytes

-(void)urlsession:(nsurlsession *)session downloadtask:(nsurlsessiondownloadtask *)downloadtask didfinishdownloadingtourl:(nsurl *)location

//4.請求完成之後呼叫

-(void)urlsession:(nsurlsession *)session task:(nsurlsessiontask *)task didcompletewitherror:(nserror *)error

使用nsurlsessionuploadtask建立上傳任務:

//1.建立session

self.session = [nsurlsession sessionwithconfiguration:[nsurlsessionconfiguration defaultsessionconfiguration] delegate:self delegatequeue:[nsoperationqueue mainqueue]];

//2.建立task

設定檔案上傳的檔案內容,getbody是獲取請求體;請求體拼接的方法和nsurlconnection中的一樣;

[[self.session uploadtaskwithrequest:request fromdata:[self getbody]] resume];

NSURLSession的簡單使用

寫入 nsurl url nsurl urlwithstring 建立session nsurlsession session nsurlsession sharedsession 設定需要請求的url並建立請求任務 nsurlsessiondatatask task session datatas...

NSURLSession的檔案上傳

檔案上傳的步驟 1 確定上傳路徑 2 建立 可變 請求物件 3 修改請求方法為post 設定請求頭資訊,告訴伺服器這是乙個檔案上傳請求 按照固定的格式拼接資料 4 設定請求體資訊 檔案引數 5 建立會話物件 6 根據會話物件來建立uploadtask 7 執行task傳送請求上傳檔案 示例如下 需要...

NSURLSession基本使用

nsurlsession是ios7推出來的用於替代nsurlconnection的乙個網路框架,從ios9開始系統也已不在推薦使用nsurlconnection,轉而使用nsurlsession進行網路請求。nsurlsession使用是之前的nsurlconnection相比較發生了一些。其使用的...