OKHttp3 快速開始

一、什麼是OKHttp3

官網地址:https://square.github.io/okhttp/
github地址:https://github.com/square/okhttp

OKHttp是一個當前主流的網絡請求的開源框架
Square公司開發,用於替代HttpUrlConnection和Apache HttpClient
Android4.4開始,google已經開始將源碼中的HttpURLConnection替換爲OkHttp
Android6.0裏已移除HttpClient

OkHttp is an HTTP client that’s efficient by default:

  • HTTP/2 support allows all requests to the same host to share a socket.
  • Connection pooling reduces request latency (if HTTP/2 isn’t available).
  • Transparent GZIP shrinks download sizes.
  • Response caching avoids the network completely for repeat requests.

相對於其他網絡框架,有如下優點:

支持 Spdy、 Http1.X、 Http2、 Quic以及 WebSocket
連接池複用底層 TCP(Socket),減少請求延時
無縫的支持 GZIP減少數據流量
緩存響應數據減少重複的網絡請求
請求失敗自動重試主機的其他 ip,自動重定向

二、基於springboot的RestTemplate、okhttp和HttpClient對比

參考URL: https://www.cnblogs.com/wzk-0000/p/10955406.html

  1. HttpClient:代碼複雜,還得操心資源回收等。代碼很複雜,冗餘代碼多,不建議直接使用。

  2. RestTemplate: 是 Spring 提供的用於訪問Rest服務的客戶端, RestTemplate 提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。

  3. okhttp:OkHttp是一個高效的HTTP客戶端,允許所有同一個主機地址的請求共享同一個socket連接;連接池減少請求延時;透明的GZIP壓縮減少響應數據的大小;緩存響應內容,避免一些完全重複的請求。

當網絡出現問題的時候OkHttp依然堅守自己的職責,它會自動恢復一般的連接問題,如果你的服務有多個IP地址,當第一個IP請求失敗時,OkHttp會交替嘗試你配置的其他IP,OkHttp使用現代TLS技術(SNI, ALPN)初始化新的連接,當握手失敗時會回退到TLS 1.0。

三、Okhttp的基本使用

OkHttp的使用是非常簡單的. 它的請求/響應 API 使用構造器模式builders來設計,它支持阻塞式的同步請求和帶回調的異步請求。

1. maven引入

maven倉庫查找最新版本引入

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.5.0</version>
</dependency>

四、使用過程常見問題總結

1. 在項目中引入okhttp的4.4.0版後發現idea點run和debug沒響應,重啓也沒反應

解決idea導入kotlin項目時,項目無法編譯運行的問題
參考URL: https://blog.csdn.net/wangyuanjiet/article/details/81220987
OkHttp 4 正式版發佈,從 Java 切換到 Kotlin
參考URL: https://www.oschina.net/news/107848/okhttp-4-0-0-released
idea2017等低版本引入okhttp4無法編譯運行
參考URL: https://blog.csdn.net/aoeace/article/details/103157193

現象:
在項目中引入okhttp的4.4.0版後發現idea點run和debug沒響應,重啓也沒反應,換成3.14.2就好了。

原因分析:
pom引入okhttp4.x以前的版本idea可以正常編譯運行,升級到okhttp4.x後,無法編譯運行

因爲OkHttp 4.x將我們的實現語言從Java升級到Kotlin,並使其他所有內容保持不變。我們選擇Kotlin是因爲它在與Java緊密集成的同時爲我們提供了強大的新功能。

解決方式:
方案一:
1、選中菜單的file,選擇setting,kotlin update
2、選中菜單的file,選擇project structure=>Modules=>選中項目=>點擊加號,加上Kotlin

方案二:使用低版本,如 3.x版本的okhttp。 (本人暫時採用該方案)

五、其他參考

你必須學會的OkHttp,帶你快速上車
參考URL: https://blog.51cto.com/14541311/2438941
easy-okhttp是對OkHttp網絡框架封裝,提供文件上傳和下載,表單(含文件)提交,鏈式調用,支持HTTPS和自定義簽名證書等特性。
參考URL: https://gitee.com/yuanzizhenxin/easy-okhttp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章