本篇文章的HTTPDNS集成,只针对HTTP协议进行ip直连。相对HTTPS而言,没有SSL/TLS的握手过程,更不会出现SNI的场景,故而不需做SNI的配置,更加不会用到CFNetwork网络库,简单了许多。第一期对HTTPDNS概念已经做过阐述了,就不多介绍了。下面就直奔本文主题,将干货呈上。
一、还是用NSURLProtocol拦截请求的方式,用ip替换host。
1、注册自定义的URLPrototcol,再自定义NSURLSessionConfiguration的属性。还是那句话:此处为了便于理解所以引用了SDWebImage,实际操作的时候,建议对外提供一个注册接口(一个返回值为NSURLSessionConfiguration的接口。eg:+ (NSURLSessionConfiguration *)configurationForHttpDns),不要直接用此种直接依赖SDWebImage的方式,以免污染HTTPDNS部分。 图 2如图1
第2步、对于要过滤拦截的域名需在此方法判断 图 3
图 3第3步、请求ip替换host的过程,并给header添加host。如图4
图 4若为post请求,拿回body数据。如图5
图 5
网友评论