猿题库 网络框架 入门认识

YTKBaseRequest 主要是针对请求的code(像请求头、请求序列、响应序列之类的)
YTKRequest 主要是针对缓存的code

读猿题库 网络框架

继承YTKRequest写自己的 具体请求类

发出请求是通过方法:startWithCompletionBlockWithSuccess 这个方法在YTKBaseRequest中

方法中给 request的两个block属性赋值

self.successCompletionBlock = success;

self.failureCompletionBlock = failure;

接着调用 start方法

YTKBaseRequest基类中的start方法中:首先调用toggleAccessoriesWillStartCallBack方法告知 附件 请求将要开始,接着通过[YTKNetworkAgent sharedAgent]添加请求

YTKNetworkAgentaddRequest方法对请求做了处理,并且在方法的最后通过resume方法发起请求

addRequest中

1 - (NSURLSessionTask *)sessionTaskForRequest:(YTKBaseRequest *)request error:(NSError * _Nullable __autoreleasing *)error 

2 - (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method

                               requestSerializer:(AFHTTPRequestSerializer *)requestSerializer

                                       URLString:(NSString *)URLString

                                      parameters:(id)parameters

                                           error:(NSError * _Nullable __autoreleasing *)error 

3 - (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method

                               requestSerializer:(AFHTTPRequestSerializer *)requestSerializer

                                       URLString:(NSString *)URLString

                                      parameters:(id)parameters

                       constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block

                                           error:(NSError * _Nullable __autoreleasing *)error 

4 dataTask = [_manager dataTaskWithRequest:request

                           completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *_error) {

                               [self handleRequestResult:dataTask responseObject:responseObject error:_error];

                           }];

5 在[self handleRequestResult:dataTask responseObject:responseObject error:_error];这个方法中 利用

succeed = [self validateResult:request error:&validationError];

id validator = [request jsonValidator];这里就是对返回类型的验证


YTKRequest中start方法中:通过属性ignoreCache判断是否忽略缓存,如果要为YES则调用startWithoutCache方法,在这个方法中调用clearCacheVariables清空所有的缓存数据,然后调用父类的start

                                                       如果属性resumableDownloadPath不空,则也清空缓存

                                                       如果loadCacheWithError方法返回NO,则也清空缓存

                                              否则:_dataFromCache = YES; 注意loadCacheWithError方法中判断了 缓存是否存在


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值