猿题库 网络框架入门认识

    xiaoxiao2021-04-11  40

    猿题库网址:https://github.com/yuantiku/YTKNetwork/blob/master/Docs/BasicGuide_cn.md 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方法中判断了 缓存是否存在

    转载请注明原文地址: https://ju.6miu.com/read-666435.html

    最新回复(0)