网络请求

YTKNetworkConfig的功能使用方法?

1、配置所有网络请求的主机地址和CDN地址2、与url过滤类一起来统一对所有的url进行更改 3、本质是一个单例类,所以直接实例化对象,设置对象的baseUrl和cdnUrl属性

网络请求类YTKRequest?

这相当于我们的BaseRequest,以后每一个网络请求对象都将继承于它,一个网络请求一个对象。使用就是通过覆盖父类的方法来建立特定的网络请求对象,主要就是覆盖requestUrl、requestMethod、requestArgument等方法,需要特别注意的是因为详细网址已经设置在YTKNetworkConfig类的baseUrl属性里,因此这里的requestUrl就不用再写服务器的主机地址了。请求数据之前先判断已有的JSON数据是否无效的属性:jsonValidator检查网络请求到的JSON与已有的JSON是否一致:statusCodeValidator属性如果我们要POST文件就需要用到属性:constructingBodyBlock

什么叫支持文件的断点续传?

如何打破Block回调中的循环引用在block里直接用self?

就是在网络请求结束之后,调用将Block置空的方法来防止循环引用,这样就可以少些很多的typeof self weafSelf;使用方法?pod ‘YTKNetwork’。将每一个网络请求都封装成对象,每一个请求都需要继承YTKRequest类,通过覆盖父类的一些方法来构造制定的网络请求。就是在网络请求结束之后,调用将Block置空的方法来防止循环引用,这样就可以少些很多的__weak typeof (self) weafSelf = self;

网络封装的适用场景?

1、需要缓存2、网络请求之间存在依赖,即B网络请求是否开始与A网络请求的结果直接相关3、依赖特定的版本号来判断缓存的内容已过期4、不仅可以实现Block回调,更是可以通过设置delegate属性等于self,同时调用start方法进行委托回调。按时间缓存网络请求内容?意思是说按一定的时间规律来进行缓存还是说超过了一定时间后已经缓存的内容失效,其实两者并不矛盾,正是因为缓存的内容在一段时间之后失效,所以需要重新请求数据,进行缓存。什么叫按版本号缓存网络请求地址?网络请求中统一设置CDN地址,什么是CDN地址?全称content delivery Network,内容分发网络。通过在网络各处放置节点服务器实现在现有的服务器基础上补充一层智能虚拟网络,智能引导用户到最近的服务器上,是内容传输的更快、更稳定。相互依赖的网络请求的发送?就是一个网络请求的启动开关取决于另一个网络请求的请求结果。

为什么要验证JSON的合法性?

因为从服务器获得的JSON数据不一定总是可信赖的,如果数据是从有故障的服务器返回了一个错误的格式,就非常容易造成客户端崩溃。就加入说正常情况下,我们登录个人中心,返回的昵称总是字符串,用户年龄都是数字,可是假如返回的文件格式出现问题,那么客户端必崩无疑。所以验证的方法就是重写父类基础网络请求YTKRequest类的- (id)jsonValidator方法。返回的是一个字典,这个字典里面的键就是字符串形参,键值对的值就是【NSString class】。

在YTKNetworkConfig的对象里同时设置了baseUrl和cdnUrl属性?

1、默认使用baseUrl2、如果想要使用cdnUrl,就必须重写基础网络请求YTKRequest类的-(BOOL)useCDN方法并返回YES

实现断点续传下载?

重写基础网络请求YTKRequest类的resumableDownloadPath方法,直接返回一个文件路径字符串。这里面就涉及到库路径Lib Path。

缓存路径cachePath如何实现缓存数据的存取?

首先就是通过重写基础网络请求YTKRequest类的- (NSInteger的)cacheTimeInSeconds方法设定高速缓存数据的有效秒数,如果缓存的数据没有到期,在缓存期内调用start方法或是startWithCompletionBlockWithSuccess方法时实际上并不会发送真正的请求,而是直接返回当初高速缓存的数据,只有在缓存过期时,才会真正地发送网络请求。

高级用法

批量编辑网络请求路径?

首先分析url参数过滤的类的实现原理,其实本质就是通过一个全新的自定义类来整合基础的url和新增的参数字典,然后介绍url参数过滤的类的使用方法。1、新建一个url参数过滤的类,这个类的.h方法里面有一个协议,协议里面主要实现了两个方法,第一个方法输入参数是一个字典,返回一个自定义类的对象;第二个方法就是输入参数一为原始url的字符串,参数二为基础网络请求类的对象,返回参数是一个全新的url字符串。2、.m方法里面首先包括一个名为参数arguments的全局变量字典。前面说过返回的参数为url参数过滤的类的对象本身,恰好这个url参数过滤的类的对象的初始化就需要传入argument字典。让我奇怪的是为什么是url参数过滤的类生成类时的self对象来调用alloc来开辟内存空间。而且又返回一个url参数过滤的类的对象,好奇怪。3、在输入原始url和增加的request两个参数之后返回一个全新的url字符串。这里面务必注意这里是通过网络请求私有类来调用一个方法拼接原始的url和新增的参数字典,最后返回一个字符串,反而当初传进来的request网络请求类对象并没有使用。

举例现在要把客户端的版本号添加到所有的网络请求url之中?

其实就是在设置根控制器为可见的方法里使用两个类来实现网络参数的统一添加,所有的url都变成全新的url,当务之急还是先通过url参数过滤的类调用类方法传入参数实例化一个url参数过滤的类的对象。然后再通过网络配置这个单例类对象调用添加url参数过滤的类的对象的方法,其目的就是将添加后的参数推广到所有网络请求url。

同一时间发送批量的网络请求并统一处理同时请求成功时的回调?

1、实例化4个Api对象2、把这4个对象以数组的元素的形式传入初始化YTKBatchRequest对象的数组形参里3、YTKBatchRequest对象调用startWithCompletionBlockWithSuccess方法4、在4个Api对象全部请求成功的Block回调里实例化一个临时数组并赋值为YTKBatchRequest对象的requestArray属性5、再各自使用4个Api类实例四个Api对象,一一对应requestArray的每一个元素,但然需要强转6、现在就跟一个Api请求成功获得的request没有什么区别了。

加载缓存数据的高级用法?

由于加载慢,所以先调用方法[api cacheJson]显示上次缓存的内容,加载成功后,再用最新的内容替换上次的内容,如是断网状态也先显示上次缓存中的内容。当初不是还需要Api先来判断缓存的数据是否在有效时间内,然后再决定是否是真的请求数据。而现在就是直接调用- (id)cacheJson方法获得上次缓存的内容。前提必须重写父类设定缓存有效时间的方法- (NSInteger)cacheTimeInSeconds返回一个大于0的值,这样才能开启基础网络请求类的缓存功能。因为默认情况下缓存数据的有效时间为0秒。

上传文件获得一个访问文件的Api?

关键就是重写基础网络请求类的- (AFConstructingBlock)constructingBodyBlock方法,在这个方法里直return一个Block代码块,返回参数为void直接忽略没写,输入参数为一个满足协议的formData值,数据类型自然不确定是id啦。这就相当于直接return一个NSString *tempString = @“”,只不过这里的tempString是一个^(idformData)输入参数为fromData的Block,而且这个地方直接给Block赋值了,真的是既声明又赋值。赋值的代码里面首先就是压缩图片成NSData数据。最后通过formData调用appendPartWithFileData方法正式上传图片。尤其注意这里需要传入三个参数,其一是文件的二进制数据,其二是文件名字,其三是文件夹的名字,其四很关键,需要传入文件类型,图片通常都是image/jpeg。另外文件名字和文件夹的名字可以相同,而且通常来说就是image。

统一设置网络请求Api的请求头HeaderField?

重写覆盖基础网络请求类的-(NSDictionnary*)requestHeaderFieldValueDictionary方法返回一个请求头的键值对的字典。务必注意,请求头字典的键和值都必须是NSString类型。

定制自定义的网络请求类对象?

重写最最基础网络请求YTKBaseRequest类的- (NSURLRequest *)buildCustomUrlRequest

方法,返回一个基础网络请求类的对象。尤其注意的是,只要返回的基础网络请求类的对象非nil不为空,那么会忽略其它一切自定义request的方法。

按时间缓存网络请求内容?

意思是说按一定的时间规律来进行缓存还是说超过了一定时间后已经缓存的内容失效,其实两者并不矛盾,正是因为缓存的内容在一段时间之后失效,所以需要重新请求数据,进行缓存。

按版本号缓存网络请求地址?

网络请求中统一设置CDN地址,什么是CDN地址?

全称content delivery Network,内容分发网络。通过在网络各处放置节点服务器实现在现有的服务器基础上补充一层智能虚拟网络,智能引导用户到最近的服务器上,是内容传输的更快、更稳定。

相互依赖的网络请求的发送?

就是一个网络请求的启动开关取决于另一个网络请求的请求结果。

一次性对所有的网络请求路径进行更改?

首先分析url参数过滤的类的实现原理,其实本质就是通过一个全新的自定义类来整合基础的url和新增的参数字典,然后介绍url参数过滤的类的使用方法。

1、新建一个url参数过滤的类,这个类的.h方法里面有一个协议,协议里面主要实现了两个方法,第一个方法输入参数是一个字典,返回一个自定义类的对象;第二个方法就是输入参数一为原始url的字符串,参数二为基础网络请求类的对象,返回参数是一个全新的url字符串。

2、.m方法里面首先包括一个名为参数arguments的全局变量字典。前面说过返回的参数为url参数过滤的类的对象本身,恰好这个url参数过滤的类的对象的初始化就需要传入argument字典。让我奇怪的是为什么是url参数过滤的类生成类时的self对象来调用alloc来开辟内存空间。而且又返回一个url参数过滤的类的对象,好奇怪。

3、在输入原始url和增加的request两个参数之后返回一个全新的url字符串。这里面务必注意这里是通过网络请求私有类来调用一个方法拼接原始的url和新增的参数字典,最后返回一个字符串,反而当初传进来的request网络请求类对象并没有使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 141,714评论 1 298
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 60,817评论 1 254
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 93,456评论 0 211
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 40,811评论 0 174
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 48,501评论 1 252
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,648评论 1 173
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,305评论 2 267
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,107评论 0 165
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 28,870评论 6 228
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,441评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,211评论 2 213
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,531评论 1 225
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,189评论 0 31
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,074评论 2 213
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,433评论 3 204
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,596评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 25,953评论 0 164
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,423评论 2 230
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,515评论 2 229

推荐阅读更多精彩内容

  • AFHTTPRequestOperationManager 网络传输协议UDP、TCP、Http、Socket、X...
    Carden阅读 4,246评论 0 12
  • Android 异步网络请求框架-Volley 1. 功能介绍 1.1. Volley Volley 是 Goog...
    Brian512阅读 3,711评论 2 40
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,001评论 18 139
  • 网络请求是android客户端很重要的部分。下面从入门级开始介绍下自己Android网络请求的实践历程。希望能给刚...
    passiontim阅读 1,344评论 0 17
  • 近日在阅读《与神对话》2,第一部几年前便已看过,觉得未能好好消化,一直未动手准备第二部的阅读。一经打开,便如重拾前...
    左手咖啡右手娃阅读 877评论 0 0