iOS HTTPDNS集成,結(jié)合SDWebImage對HTTP協(xié)議進(jìn)行"ip直連"。

本篇文章的HTTPDNS集成,只針對HTTP協(xié)議進(jìn)行ip直連。相對HTTPS而言,沒有SSL/TLS的握手過程,更不會出現(xiàn)SNI的場景,故而不需做SNI的配置,更加不會用到CFNetwork網(wǎng)絡(luò)庫,簡單了許多。第一期對HTTPDNS概念已經(jīng)做過闡述了,就不多介紹了。下面就直奔本文主題,將干貨呈上。

一、還是用NSURLProtocol攔截請求的方式,用ip替換host。

1、注冊自定義的URLPrototcol,再自定義NSURLSessionConfiguration的屬性。還是那句話:此處為了便于理解所以引用了SDWebImage,實(shí)際操作的時(shí)候,建議對外提供一個(gè)注冊接口(一個(gè)返回值為NSURLSessionConfiguration的接口。eg:+ (NSURLSessionConfiguration *)configurationForHttpDns),不要直接用此種直接依賴SDWebImage的方式,以免污染HTTPDNS部分。 圖 2如圖1

第2步、對于要過濾攔截的域名需在此方法判斷 圖 3

圖 3

第3步、請求ip替換host的過程,并給header添加host。如圖4

圖 4

若為post請求,拿回body數(shù)據(jù)。如圖5

圖 5

第4步、用的新的request重新創(chuàng)建sessionTask,然后resume。如圖6

圖 6

第5步、網(wǎng)絡(luò)鏈接、數(shù)據(jù)傳輸、網(wǎng)絡(luò)錯(cuò)誤的處理過程,如圖7。(因?yàn)榇颂帪閔ttp,所以不會有SSL/TLS的握手過程。)

圖 7
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容