request基本設(shè)計(jì)
1 把通過(guò) [[YTKNetworkConfig sharedConfig] addUrlFilter:filter];
把公共參數(shù)保存在YTKNetworkConfig
單例里面(在構(gòu)建URL的時(shí)候從單例取出)。
2 把請(qǐng)求頭請(qǐng)求參數(shù)以及成功失敗block都保存在request類(lèi)(主要做model用,此類(lèi)不做數(shù)據(jù)處理)。
3 request使用start調(diào)用 [[YTKNetworkAgent sharedAgent] addRequest:request]
。
4 [[YTKNetworkAgent sharedAgent] addRequest:request]
此函數(shù)主要是構(gòu)建URL并使用AFNetworking生成一個(gè)NSURLSessionTask實(shí)例給request。然后保存在一個(gè)字典里(以NSURLSessionTask的taskIdentifier為key保存了request)。
5 當(dāng)NSURLSessionTask回調(diào)后在字典里根據(jù)taskIdentifier找到request然后調(diào)用對(duì)應(yīng)的成功失敗block。
總結(jié)一下,里面是把request類(lèi)做model,YTKNetworkAgent做請(qǐng)求動(dòng)作了。
斷點(diǎn)續(xù)傳(大致上跟上面差不多,只是有一點(diǎn)區(qū)別);
1 給request設(shè)置個(gè)保存路徑。
2 當(dāng)request有保存路徑時(shí)候,YTKNetworkAgent從tmp的Incomplete目錄取出上次下載的數(shù)據(jù)創(chuàng)建一個(gè)downloadTask。
3 當(dāng)失敗的時(shí)候,把下載的數(shù)據(jù)放在tmp目錄的Incomplete下(命名規(guī)則是用md5)。
4 當(dāng)所有數(shù)據(jù)都下載好了,回調(diào)成功block。
YTKBatchRequest
其實(shí)就是把幾個(gè)request封裝在YTKBatchRequest的一個(gè)array里面。然后在YTKBatchRequest對(duì)array里面的request都調(diào)用start請(qǐng)求。當(dāng)其中有一個(gè)回調(diào)失敗的時(shí)候在YTKBatchRequest取消其他requset回調(diào),并調(diào)用YTKBatchRequest的失敗block。而當(dāng)其中一個(gè)回調(diào)成功的時(shí)候,則成功的計(jì)數(shù)加1。當(dāng)成功計(jì)數(shù)跟array數(shù)目一樣多的時(shí)候,調(diào)用YTKBatchRequest的成功block。
YTKChainRequest
跟YTKBatchRequest差不多,只是在array里面上一個(gè)request成功回調(diào)后才調(diào)用下一個(gè)request。