Android編程中okhttp的優點


      OkHttp 相較於其它的實現有以下的優點.

       支持SPDY,允許連接同一主機的所有請求分享一個socket。 如果SPDY不可用,會使用連接池減少請求延遲。 使用GZIP壓縮下載內容,且壓縮操作對用戶是透明的。 利用響應緩存來避免重復的網絡請求。 當網絡出現問題的時候,OKHttp會依然有效,它將從常見的連接問題當中恢復。 如果你的服務端有多個IP地址,當第一個地址連接失敗時,OKHttp會嘗試連接其他的地址,這對IPV4和IPV6以及寄宿在多個數據中心的服務而言,是非常有必要的。

      因此使用 OkHttp 作為替代是好的選擇.

1.框架重寫請求

當您向okhttp提供一個請求時,為了正確性和效率,okhttp將重寫您的請求。

okhttp可能從原始請求添加頭文件,包括內容長度,傳輸編碼、代理、內容類型等。如果有cookie將添加一個cookie頭。

有些請求會有緩存響應,如果已過期,okhttp可以執行條件更新響應。

2.跟蹤請求

當您請求的URL已移動是,web服務器將返回類似302以指示文檔的新URL的相應代碼。okhttp將遵循重定向檢索最終響應。

3.重試請求

如果有不同路線,okhttp將請求不同的路線。

4.Call被執行的兩種方法

1.同步:你的線程會阻止,直到響應返回

2.異步:你對請求可以進行排隊,並且響應回來對另一線程進行調用。Call可以從任何線程被取消。如果未完成將會失敗會拋出io異常。

      雖然你只提供了URL,但okhttp計划連接你的服務器使用三種類型:URL、地址、路線。

1.URL

2.地址

3.路線

4.Connections

      當您請求一個 URL 的 OkHttp 時,這里做了些什么:

1.它使用 URL 和配置 OkHttpClient 來創建一個地址。此地址指定如何我們會連接到 web 服務器。

2.它嘗試檢索與該地址的連接,從連接池中。

3.如果它不在池中查找連接,它選擇一條路線嘗試。這通常意味着制作一個 DNS 請求以獲取服務器的 IP 地址。如有必要,它然后選擇 TLS 版本和代理服務器。

4.如果它是一個新的路線,它連接通過建立一個直接套接字連接,TLS 隧道 (為 HTTPS 通過 HTTP 代理服務器) 或直接的 TLS 連接。它作為必要的 TLS 握手。

5.它會發送 HTTP 請求,並讀取響應。

6.如果有連接問題,OkHttp 會選擇另一條路線,然后再試。這允許 OkHttp 恢復時的服務器地址的子集是遙不可及。它也是有用的當連接池是陳舊或未遂的 TLS 版本不受支持。

7.一旦收到了響應,連接將返回池,所以它可以重用一個未來的請求。連接被逐出池后的非活動時間。

      二.原生態使用方法

同步獲取(Synchronous Get)

下載文件,打印頭文件,並以字符串形式打印其響應體。

響應體string()方法對小文件,方便快捷。但如果響應體大(大於1 MIB),避免string()因為它會加載整個文件到內存中。在這種情況下,更傾向於將身體作為一個流來處理。

異步獲取

在一個工作線程上下載文件,並在響應時調用返回。該回調是在響應頭准備好后進行的。讀取響應體可塊。okhttp目前不提供異步API部分接收響應體。

取消Calls

使用Call.cancel()立即停止正在進行的請求。如果一個線程正在寫請求或閱讀的反應,它會收到IOException。用這個來保護網絡的電話時,不再是必要的;例如當用戶導航離開應用程序。同步和異步調用都可以取消。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM