request基本设计
1 把通过 [[YTKNetworkConfig sharedConfig] addUrlFilter:filter];
把公共参数保存在YTKNetworkConfig
单例里面(在构建URL的时候从单例取出)。
2 把请求头请求参数以及成功失败block都保存在request类(主要做model用,此类不做数据处理)。
3 request使用start调用 [[YTKNetworkAgent sharedAgent] addRequest:request]
。
4 [[YTKNetworkAgent sharedAgent] addRequest:request]
此函数主要是构建URL并使用AFNetworking生成一个NSURLSessionTask实例给request。然后保存在一个字典里(以NSURLSessionTask的taskIdentifier为key保存了request)。
5 当NSURLSessionTask回调后在字典里根据taskIdentifier找到request然后调用对应的成功失败block。
总结一下,里面是把request类做model,YTKNetworkAgent做请求动作了。
断点续传(大致上跟上面差不多,只是有一点区别);
1 给request设置个保存路径。
2 当request有保存路径时候,YTKNetworkAgent从tmp的Incomplete目录取出上次下载的数据创建一个downloadTask。
3 当失败的时候,把下载的数据放在tmp目录的Incomplete下(命名规则是用md5)。
4 当所有数据都下载好了,回调成功block。
YTKBatchRequest
其实就是把几个request封装在YTKBatchRequest的一个array里面。然后在YTKBatchRequest对array里面的request都调用start请求。当其中有一个回调失败的时候在YTKBatchRequest取消其他requset回调,并调用YTKBatchRequest的失败block。而当其中一个回调成功的时候,则成功的计数加1。当成功计数跟array数目一样多的时候,调用YTKBatchRequest的成功block。
YTKChainRequest
跟YTKBatchRequest差不多,只是在array里面上一个request成功回调后才调用下一个request。
网友评论