OkHttp概述
目錄
?
1.OkHttp是什么?
2.Get方式請(qǐng)求URL
3.Post方式提交數(shù)據(jù)到服務(wù)器
4.注意事項(xiàng)
5.引用OkHttp庫(kù)
6.MockWebServer
1.OkHttp是什么?
HTTP是現(xiàn)代應(yīng)用網(wǎng)絡(luò)的方式請(qǐng)求協(xié)議。這是我們交換數(shù)據(jù)和媒體的方式。高效地執(zhí)行HTTP可以使您的工作負(fù)載更快,并節(jié)省帶寬。
OkHttp是一個(gè)默認(rèn)高效的HTTP客戶端:
1)HTTP/2支持允許對(duì)同一主機(jī)的所有請(qǐng)求共享一個(gè)套接字。
2)連接池減少了請(qǐng)求延遲(如果HTTP/2不可用)。
3)透明的GZIP壓縮了下載文件的大小。
4)響應(yīng)緩存完全避免了網(wǎng)絡(luò)中的重復(fù)請(qǐng)求。
當(dāng)網(wǎng)絡(luò)出現(xiàn)問(wèn)題時(shí),OkHttp會(huì)堅(jiān)持下來(lái):它會(huì)從常見的連接問(wèn)題中悄悄地恢復(fù)過(guò)來(lái)。如果您的服務(wù)有多個(gè)IP地址,如果第一個(gè)連接失敗,OkHttp將嘗試備用地址。這對(duì)于IPv4+IPv6和托管在冗余數(shù)據(jù)中心中的服務(wù)是必要的。OkHttp支持現(xiàn)代TLS特性(TLS 1.3、ALPN、證書固定)。可以將其配置為回退以實(shí)現(xiàn)廣泛的連接。
使用OkHttp很容易。它的請(qǐng)求/響應(yīng)API是用鏈?zhǔn)綐?gòu)建器和不變性設(shè)計(jì)的。它同時(shí)支持同步阻塞調(diào)用和帶回調(diào)的異步調(diào)用。
2.Get方式請(qǐng)求URL
這個(gè)程序請(qǐng)求一個(gè)URL和以字符串的格式打印它的響應(yīng)內(nèi)容:
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方式提交數(shù)據(jù)到服務(wù)器
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.注意事項(xiàng)
OkHttp適用于Android 5.0+ (API級(jí)別21+)和Java 8+。
OkHttp依賴于Okio的高性能I/O和Kotlin標(biāo)準(zhǔn)庫(kù)。兩者都是具有強(qiáng)大向后兼容性的小型庫(kù)。
我們強(qiáng)烈建議您隨時(shí)更新OkHttp。與自動(dòng)更新web瀏覽器一樣,與HTTPS客戶機(jī)保持同步是防范潛在安全問(wèn)題的重要手段。我們跟蹤動(dòng)態(tài)TLS生態(tài)系統(tǒng),并調(diào)整OkHttp以改進(jìn)連接和安全性。
OkHttp使用您的平臺(tái)的內(nèi)置TLS實(shí)現(xiàn)。在Java平臺(tái)上,OkHttp還支持Conscrypt(加密),它將BoringSSL與Java集成在一起。OkHttp將使用,如果它是第一個(gè)安全提供商:
Security.insertProviderAt(Conscrypt.newProvider(), 1);OkHttp 3.12.x branch支持Android 2.3+ (API level 9+)和Java 7+。這些平臺(tái)缺乏對(duì)TLS 1.2的支持,不應(yīng)該使用。但是由于升級(jí)是困難的,我們將備份關(guān)鍵補(bǔ)丁到3.12.x分部到2020年12月31日。
5.引用OkHttp庫(kù)
implementation("com.squareup.okhttp3:okhttp:4.4.0")6.MockWebServer
OkHttp包含了一個(gè)測(cè)試HTTP,HTTPS和HTTP/2客戶端;
testImplementation("com.squareup.okhttp3:mockwebserver:4.4.0")?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
- 上一篇: 您的高品质生活还差一个不卡顿的网络
- 下一篇: 闭环思维深刻认识