原文地址:http://square.github.io/okhttp/
概述
HTTP是现代应用网络交互数据信息和媒介影像的主要传输方式。更有效率的HTTP传输会使你的互联网应用加载更快,同时节省带宽。
OkHttp是一个HTTP的客户端,能够有效地完成:
- 使用HTTP 2.0协议传输,所有请求使用同一个域名,共享一个socket。
- 如果HTTP2.0 不可用,通过连接池可以减少请求延迟
- 透明的GZIP压缩减少了包下载的大小
- 响应缓存避免了网络重复请求
OkHttp坚持认为网络环境是复杂混乱且问题不断的。因此,他充分考虑了高可用,能够自发地从连接问题中恢复:
如果你的服务能够提供多个IP地址,当第一次连接失败后,OkHttp会尝试连接备选IP地址,当服务端是多数据中心架构时,这种方式相当有用。
OkHttp初始化新连接时采用的是新的TLS协议,比如SNI、ALPN,如果握手失败,会降级为采用TLS 1.0协议。
使用OkHttp很简单,API设计合理且不会轻易改变。同时支持同步阻塞式调用和异步回调函数调用。
版本支持:OkHttp支持安卓2.3及以上版本,JDK要求1.7及以上
下载及引用
要使用OkHttp,你需要同时支持Okio,用于快速IO和可调整的缓冲区,最新Jar的下载地址这里写链接内容。
OkHttp代码,实例,文档都共享在Github上。
MAVEN地址
<dependency> <groupId>com.squareup.okhttp3<!--> <artifactId>okhttp<!--> <version>3.4.1<!--> <!-->
- 1
- 2
- 3
- 4
- 5
GRADLE地址
compile 'com.squareup.okhttp3:okhttp:3.4.1'
- 1
实例
Get请求
package com.suning.okhttpdemo; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class GetUrlDemo { String run(String url) throws IOException { //由于本机设置了上网代理,因此OkHttp请求需要绑定代理 InetSocketAddress addr = new InetSocketAddress("10.19.110.55", 8080);
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
OkHttpClient client = new OkHttpClient.
Builder().proxy(proxy).build();
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 {
GetUrlDemo demo = new GetUrlDemo();
String reponse = demo.run("http://www.jd.com/");
System.out.println(reponse);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
Post请求
package okhttp3.guide;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response; public class PostExample { 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();
}
} String bowlingJson(String player1,
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31541037/viewspace-2157018/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31541037/viewspace-2157018/