OkHttp3 使用详解及网络连接缓存的处理机制

本文详细介绍了OkHttp3的使用,包括创建OkHttpClient,构建Request,同步和异步发送请求。重点讨论了拦截器,特别是CacheInterceptor的工作原理,如缓存有效性判断、再验证机制等,帮助理解OkHttp3的网络连接缓存处理。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值