目錄
1.OkHttp是什麼?
HTTP是現代應用網絡的方式請求協議。這是我們交換數據和媒體的方式。高效地執行HTTP可以使您的工作負載更快,並節省帶寬。
OkHttp是一個默認高效的HTTP客戶端:
1)HTTP/2支持允許對同一主機的所有請求共享一個套接字。
2)連接池減少了請求延遲(如果HTTP/2不可用)。
3)透明的GZIP壓縮了下載文件的大小。
4)響應緩存完全避免了網絡中的重複請求。
當網絡出現問題時,OkHttp會堅持下來:它會從常見的連接問題中悄悄地恢復過來。如果您的服務有多個IP地址,如果第一個連接失敗,OkHttp將嘗試備用地址。這對於IPv4+IPv6和託管在冗餘數據中心中的服務是必要的。OkHttp支持現代TLS特性(TLS 1.3、ALPN、證書固定)。可以將其配置爲回退以實現廣泛的連接。
使用OkHttp很容易。它的請求/響應API是用鏈式構建器和不變性設計的。它同時支持同步阻塞調用和帶回調的異步調用。
2.Get方式請求URL
這個程序請求一個URL和以字符串的格式打印它的響應內容:
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
3.Post方式提交數據到服務器
public static final MediaType JSON
= MediaType.get("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(json, JSON);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}
4.注意事項
OkHttp適用於Android 5.0+ (API級別21+)和Java 8+。
OkHttp依賴於Okio的高性能I/O和Kotlin標準庫。兩者都是具有強大向後兼容性的小型庫。
我們強烈建議您隨時更新OkHttp。與自動更新web瀏覽器一樣,與HTTPS客戶機保持同步是防範潛在安全問題的重要手段。我們跟蹤動態TLS生態系統,並調整OkHttp以改進連接和安全性。
OkHttp使用您的平臺的內置TLS實現。在Java平臺上,OkHttp還支持Conscrypt(加密),它將BoringSSL與Java集成在一起。OkHttp將使用,如果它是第一個安全提供商:
Security.insertProviderAt(Conscrypt.newProvider(), 1);
OkHttp 3.12.x branch支持Android 2.3+ (API level 9+)和Java 7+。這些平臺缺乏對TLS 1.2的支持,不應該使用。但是由於升級是困難的,我們將備份關鍵補丁到3.12.x分部到2020年12月31日。
5.引用OkHttp庫
implementation("com.squareup.okhttp3:okhttp:4.4.0")
6.MockWebServer
OkHttp包含了一個測試HTTP,HTTPS和HTTP/2客戶端;
testImplementation("com.squareup.okhttp3:mockwebserver:4.4.0")