注意:當建立的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相比較發生了一些。其使用的...