一個Android和Java上的HTTP和HTTP/2客戶端。
簡介
HTTP是應用程序訪問網(wǎng)絡的方式徒欣,就是如何交換數(shù)據(jù)和媒體纪铺。高效使用HTTP可以使得事務加載更快并節(jié)省帶寬妻坝。
OkHttp是一個高效HTTP客戶端坦胶,原因如下:
- HTTP/2支持所有訪問相同主機的請求共享一個套接字。
- 連接池減少了請求延遲(如果HTTP/2不可用)滤奈。
- 透明GZIP壓縮減少了下載大小摆昧。
- 響應緩存完全避免了重復請求的網(wǎng)絡使用。
OkHttp在網(wǎng)絡故障時堅守:它會靜默地從普遍連接問題中恢復蜒程。如果你的服務有多個IP地址绅你,OkHttp會在第一次連接失敗時嘗試另外一個地址。對于IPv4+IPv6以及服務放在多個數(shù)據(jù)中心的情況昭躺,這是很重要的忌锯。OkHttp會使用先進的TLS特性(SNI,ALPN)來初始化新連接领炫,如果握手失敗會回退到TLS 1.0偶垮。
使用OkHttp很簡單。它的請求/響應API設計為流的構建方式并且不會改變驹吮。它支持同步阻塞調(diào)用和異步回調(diào)調(diào)用针史。
OkHttp支持Android2.3及更高,Java1.7及以上碟狞。
示例
使用Get獲取內(nèi)容
下面的代碼下載一個URL并使用String打印它的內(nèi)容啄枕。
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
使用Post上傳數(shù)據(jù)
下面的代碼上傳數(shù)據(jù)到服務器。
public static final MediaType JSON
= MediaType.parse("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();
Response response = client.newCall(request).execute();
return response.body().string();
}
原文鏈接:
http://square.github.io/okhttp/
OkHttp官方文檔系列文章: