1. 创建 OkHttpClient 对象
可以直接新建,也可以用建造者模式建造出来。直接新建时,其实也是使用建造者设置了默认的请求参数。
OkHttpClient client = new OkHttpClient();
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.SECONDS)
.writeTimeout(1000, TimeUnit.SECONDS)
.readTimeout(1000, TimeUnit.SECONDS)
.build();
功能 | 函数 | 注释 |
---|---|---|
添加应用拦截器 | addInterceptor(Interceptor) | 最接近应用的拦截器 |
添加网络拦截器 | addNetworkInterceptor(Interceptor) | 接近网络的拦截器 |
设置缓存对象 | cache(Cache cache) | 使用 DiskLruCache 实现 |
okhttp3.Cache
构造时只需要指定缓存目录和大小即可。
网络拦截器实例:给返回的响应添加缓存过期时间
private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response originResponse = chain.proceed(chain.request());
// 5 分钟后过期
CacheControl.Builder builder = new CacheControl.Builder()
.maxAge(5, TimeUnit.MINUTES);
return originResponse.newBuilder()
.header("Cache-Control", builder.build().toString())
.build();
}
};
2. 准备好 Request 对象
通常用建造者模式来建造。
new Request.Builder().build();
功能 | 函数 | 注释 |
---|---|---|
添加 URL | url(String url) | |
GET 请求 | get() | |
POST 方式提交表单 | post(RequestBody body) | |
替换请求头 | header(String name, String value) | 先删除 name 对应的原有的字段对,再添加 |
添加请求头 | addHeader(String name, String value) | 直接往 ArrayList 中添加两个 String |
表单的构建
new FormB