博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
猿题库 网络框架 入门认识
阅读量:2092 次
发布时间:2019-04-29

本文共 1865 字,大约阅读时间需要 6 分钟。

猿题库网址:
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方法中判断了 缓存是否存在

转载地址:http://wwwhf.baihongyu.com/

你可能感兴趣的文章
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【python】re模块常用方法
查看>>
剑指offer 19.二叉树的镜像
查看>>
剑指offer 20.顺时针打印矩阵
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>