概述
HTTP是現(xiàn)代應用網(wǎng)絡的方式盈蛮。這是我們?nèi)绾谓粨Q數(shù)據(jù)和媒體。有效地進行HTTP使您的東西加載更快路克,并節(jié)省帶寬殴俱。
OkHttp是默認情況下高效的HTTP客戶端
HTTP / 2支持允許同一主機的所有請求共享套接字。
連接池減少請求延遲(如果HTTP / 2不可用)抓狭。
透明GZIP縮小下載大小伯病。
響應緩存可以避免重復請求的網(wǎng)絡。
當網(wǎng)絡麻煩時否过,OkHttp堅持不懈:它將從常見的連接問題中靜默地恢復午笛。如果您的服務有多個IP地址,如果第一個連接失敗苗桂,OkHttp將嘗試替代地址药磺。這對于IPv4 + IPv6以及在冗余數(shù)據(jù)中心中托管的服務是必需的。OkHttp啟動與現(xiàn)代TLS功能(SNI誉察,ALPN)的新連接与涡,如果握手失敗,則返回TLS 1.0持偏。
使用OkHttp很容易它的請求/響應API設計有流暢的構建器和不變性。它支持同步阻塞調(diào)用和具有回調(diào)的異步調(diào)用氨肌。
OkHttp支持Android 2.3及以上版本鸿秆。對于Java,最低要求是1.7怎囚。
例子
獲取網(wǎng)址
該程序下載URL并將其內(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();
}
}
public static void main(String[] args) throws IOException {
GetExample example = new GetExample();
String response = example.run("https://raw.github.com/square/okhttp/master/README.md");
System.out.println(response);
}
發(fā)布到服務器
該程序?qū)?shù)據(jù)發(fā)送到服務。
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();
try (Response response = client.newCall(request).execute()) {
return response.body().string();