YTKNetwork遇到的问题和总结

YTKNetwork 是什么?

YTKNetwork 是猿题库 iOS 研发团队基于AFNetworking封装的 iOS 网络库,其实现了一套 High Level 的 API,提供了更高层次的网络访问抽象。YTKNetwork 现在同时被使用在猿题库公司的所有产品的 iOS 端,包括:猿题库小猿搜题猿辅导粉笔直播课

YTKNetwork的具体优势

相比 AFNetworking,YTKNetwork 提供了以下更高级的功能:

        1.支持按时间缓存网络请求内容

        2.支持按版本号缓存网络请求内容

        3.支持统一设置服务器和 CDN 的地址

        4.支持检查返回 JSON 内容的合法性

        5.支持文件的断点续传

        6.支持block和delegate两种模式的回调方式

        7.支持批量的网络请求发送,并统一设置它们的回调(实现在YTKBatchRequest类中)

        8.支持方便地设置有相互依赖的网络请求的发送,例如:发送请求 A,根据请求 A 的结果,选择性的发送请求 B 和 C,再根据 B 和 C 的结果,选择性的发送请求 D。(实现在YTKChainRequest类中)

        9.支持网络请求 URL 的 filter,可以统一为网络请求加上一些参数,或者修改一些路径。

       10.定义了一套插件机制,可以很方便地为 YTKNetwork 增加功能。猿题库官方现在提供了一个插件,可以在某些网络请求发起时,在界面上显示“正在加载”的 HUD。

YTKNetwork使用场景

YTKNetwork 适合稍微复杂一些的项目,不适合个人的小项目。

如果你的项目中需要缓存网络请求、管理多个网络请求之间的依赖、希望检查服务器返回的 JSON 是否合法,那么 YTKNetwork 能给你带来很大的帮助。如果你缓存的网络请求内容需要依赖特定版本号过期,那么 YTKNetwork 就能发挥出它最大的优势。

YTKNetwork的思想

YTKNetwork 的基本的思想是把每一个网络请求封装成对象。所以使用 YTKNetwork,你的每一个请求都需要继承YTKRequest类,通过覆盖父类的一些方法来构造指定的网络请求。

把每一个网络请求封装成对象其实是使用了设计模式中的 Command 模式,它有以下好处:

将网络请求与具体的第三方库依赖隔离,方便以后更换底层的网络库。实际上 YTKNetwork 最初是基于 ASIHttpRequest 的,我们只花了两天,就很轻松地切换到了 AFNetworking。

方便在基类中处理公共逻辑,例如猿题库的数据版本号信息就统一在基类中处理。

方便在基类中处理缓存逻辑,以及其它一些公共逻辑。

方便做对象的持久化。

当然,如果说它有什么不好,那就是如果你的工程非常简单,这么写会显得没有直接用 AFNetworking 将请求逻辑写在 Controller 中方便,所以 YTKNetwork 并不合适特别简单的项目。

安装

你可以在 Podfile 中加入下面一行代码来使用 YTKNetwork

pod 'YTKNetwork'

问题和总结

1.当我使用了 YTKNetworkConfig 配置统一网络请求的服务器地址

YTKNetworkConfig *config = [YTKNetworkConfig sharedConfig];

config.baseUrl = @"http://111.11.11.111/app";

config.cdnUrl = @"http://111.11.11.111/app";

2.继承 YTKRequest 创建一个用于登录的类

网络请求封装对象

3.在控制器里面使用

TBRegisterApi *api = [[TBRegisterApi alloc] initWithUsername:self.textMail.text password:self.textPwd.text];

api.delegate = self;

[api start];

- (void)requestFinished:(YTKBaseRequest *)request {

TBLog(@"----- succeed ---- %@", request.responseJSONObject);

//Rendering interface

}

- (void)requestFailed:(YTKBaseRequest *)request {

TBLog(@"failed---%@", [[NSString alloc] initWithData:request.responseData encoding:NSUTF8StringEncoding]);

}

4.但是请求报错404,服务器找不到,但是这个接口肯定是正常的,为什么会请求失败呢?

4.1首先我没有在配置类中requstUrl这个方法没有实现,然后直接把整个接口写在baseUrl里面,再次请求的时候,显示请求成功

4.2所以说由4.1的尝试可以确定其的是没有问题的,唯一有问题的就是在requestUrl和baseUrl拼接的时候出问题了

4.3打断点找到YTKNetworkAgent文件中的- (NSURLSessionTask *)sessionTaskForRequest:(YTKBaseRequest *)request error:(NSError * _Nullable __autoreleasing *)error方法和- (NSString *)buildRequestUrl:(YTKBaseRequest *)request两个方法确定问题的所在

4.4如果在requestUrl中的拼装时填写是@"/web/login", 按正常情况下和YTKNetwork的github中的demo中提示是正常的,其实如果你这样写之后再拼装requestUrl和baseUrl时会把其中的一部分给去掉,所以会造成请求的地址错误

4.5正常的写法是这样的@“web/login/”这就是我测试成功后的结论,所以我建议作者能在拼接时候做一些容错,防止因为多加一个“/”而造成不必要的错误。

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

推荐阅读更多精彩内容